我正在尝试使用格式化的字符串'解包'(使用Python的struct模块)一个bytearray到多个变量:
(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?
谢谢@jasonharper:
您必须使用标准字节顺序/大小/对齐指示符(通常为
struct
或<
)之一启动>
格式字符串,以获得任何类型的跨平台兼容性