我正在尝试使用格式化字符串将字节数组“解包”(使用Python的struct模块)到多个变量:
(a, b, c, d, e, f, g, h) = unpack('HHHHHBBL', my_byte_array)
(当我读到docs时)期望:
当我在Windows 10机器上运行它时,这正是我所得到的。
在另外两台装有Mac OS X和Manjaro Linux的计算机上(所有三台计算机都安装了Python 3.7),我将收到一条错误消息:
struct.error: unpack requires a buffer of 24 bytes
当我运行以下命令时,所有三台机器上的输出都相同
>>> from struct import *
>>> calcsize('H')
2
>>> calcsize('B')
1
>>> calcsize('L')
8
但是当我运行以下命令时:
>>> calcsize('HHHHHBBL')
我的Windows机器上的输出是 16 ,但在其他两个系统上的输出是 24 。我觉得这很奇怪,这是怎么回事?
在多平台环境中应该如何使用 struct.unpack ?
答案 0 :(得分:0)
感谢@jasonharper:
您必须使用标准字节顺序/大小/对齐指示符之一(通常为
struct
或<
)开始>
格式的字符串,以获取任何形式的交叉平台兼容性