Python 平台间打包二进制数据大小的差异?

Differences in Python's packed binary data size among platforms?

我正在尝试 'unpack'(使用 Python 的结构模块)一个字节数组到多个变量,使用格式化字符串:

(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:

You have to start your struct format string with one of the standard byte order/size/alignment indicators (usually < or >) in order to get any sort of cross-platform compatibility