Python struct.pack()/ calcsize()

时间:2013-05-15 18:31:50

标签: python struct pack

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

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

它的回报不同。这是为什么?

我顺便使用Python 2.7.3。

1 个答案:

答案 0 :(得分:1)

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

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

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