Python struct.calcsize对QWord不起作用

时间:2014-05-30 12:19:18

标签: python struct quad

我无法找出为什么这不起作用。我想使用struct modul读取一个整数(双字)和4个四字。这代表4 + 4 * 8 = 36个字节,但是python给了我这个:

>>> import struct
>>> struct.calcsize("I4Q")
40

有谁知道为什么?非常感谢...

1 个答案:

答案 0 :(得分:1)

根据the documentation: Byte Order, Size, and Alignment

  

默认情况下,C类型以机器的本机格式表示   字节顺序,如果需要,通过跳过填充字节正确对齐   (根据C编译器使用的规则)

>>> struct.calcsize("I4Q")
40
>>> struct.calcsize("@I4Q")
40

如果您指定>=<!,则不使用原生对齐:

>>> struct.calcsize(">I4Q")
36
>>> struct.calcsize("=I4Q")
36
>>> struct.calcsize("<I4Q")
36
>>> struct.calcsize("!I4Q")
36