1

我想打包一个字节,然后是一个long。我的缓冲区只能包含 9 个元素。为什么我不能将它们打包到缓冲区中?

>>> from struct import *
>>> calcsize('qB')
9
>>> calcsize('Bq')
12

它以不同的方式返回。为什么是这样?

顺便说一句,我正在使用 Python 2.7.3。

4

1 回答 1

1

在您的第二个示例中,struct.calcsize假设字节后有 3 个字节的填充,以便 long long 可以从 4 字节边界开始。

如果您不指定填充,您会看到它们是等价的:

>>> calcsize ('Bq')
12
>>> calcsize('=Bq')
9
于 2013-05-15T18:36:27.053 回答