这是我要解压的十六进制代码。b'ABCDFGHa\x00a\x00a\x00a\x00a\x00\x00\x00\x00\x00\x00\x01'(它不应该有任何意义)
labels = unpack('BBBBBBBHHHHH5sB', msg)
struct.error: unpack requires a bytes argument of length 24
根据我的统计,这两个都是长度 = 23,包括我的解包函数中的格式和十六进制值的长度。我不明白。
提前致谢
当数据在自然边界上时,大多数处理器访问数据的速度更快,这意味着大小为 2 的数据应该在偶数地址上,大小为 4 的数据应该在可被 4 整除的地址上访问,等等。
struct
默认保持这种对齐方式。由于您的结构以 7 'B' 开头,因此添加了一个填充字节以在偶数地址上对齐下一个 'H'。为防止在 Python 中出现这种情况,请在字符串前面加上“=”。
示例:
>>> import struct
>>> struct.calcsize('BBB')
3
>>> struct.calcsize('BBBH')
6
>>> struct.calcsize('=BBBH')
5
我是一名优秀的程序员,十分优秀!