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

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


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

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

最佳答案

在第二个示例中,struct.calcsize假定在该字节之后填充3个字节,以便long long可以在4字节边界处开始。

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

>>> calcsize ('Bq')
12
>>> calcsize('=Bq')
9

10-06 05:31