我想要打包一个字节后跟一个长整数。我的缓冲区只能包含9个元素。为什么我不能将它们打包到缓冲区?
>>> from struct import *
>>> calcsize('qB')
9
>>> calcsize('Bq')
12
它的回报不同。这是为什么?
我顺便使用Python 2.7.3。
答案 0 :(得分:1)
在你的第二个例子中,struct.calcsize
假设在字节之后有3个字节的填充,以便long long可以在4字节边界上开始。
如果您指定无填充,您将看到它们是等效的:
>>> calcsize ('Bq')
12
>>> calcsize('=Bq')
9