我正在尝试学习python字节数组,以便能够编写自己的IP,TPC,UDP标头。我使用python中的struct打包和解压缩二进制数据,因此指定的类型给出了格式字符串。
ba2 = bytearray(2)
print(ba2, "The size: ", ba2.__len__())
struct.pack_into(">bx", ba2, 1, 1)
print(struct.unpack(">bx", ba2))
现在,当我尝试将">bx"
as格式的缓冲区打包为长度为2的缓冲区时,根据上面的代码,我得到了错误:
bytearray(b'\x00\x00') The size: 2
Traceback (most recent call last):
File "D:/User/Documents/Python/Network/Main.py", line 58, in <module>
bitoperations_bytes_bytearrays_test()
File "D:/User/Documents/Python/Network/Main.py", line 49, in bitoperations_bytes_bytearrays_test
struct.pack_into(">bx", ba2, 1, 1)
struct.error: pack_into requires a buffer of at least 2 bytes
但我有2个字节的字节数组。
我究竟做错了什么?
并且如果我错过了它,请参考一些文档(我已经阅读了python doc,但是可能错过了它)。
编辑:
对不起,如果我不清楚。但我只想更改字节数组中的第二个字节。因此,“ x”以格式填充。
和我一样愚蠢,只是像这样的格式排除了“ x”:
struct.pack_into(">b", ba2, 1, 1)
并且正确的包装将被制成。输出如下:
bytearray(b'\x00\x00') The size: 2
A pack with one byte shift: 0001
(0, 1)
和我一样愚蠢,只是像这样的格式排除了“ x”:
struct.pack_into(">b", ba2, 1, 1)
并且正确的包装将被制成。输出如下:
bytearray(b'\x00\x00') The size: 2
A pack with one byte shift: 0001
(0, 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句