Python struct格式化字符大小,为什么它比它应该的大?

2024-09-24 20:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如果要执行以下操作,请回答一个简单的问题:

import struct
struct.calcsize("6cHcBHIIQ")

当我认为应该是28时返回32。在

通过执行以下操作(缺少Q):

^{pr2}$

它返回20,这是我所期望的。在

然后做:

import struct
struct.calcsize("Q")

返回8,这是正确的。在

为什么把Q加在前一个上会导致额外的12个字节而不是8个?在

Python3,windows机器。在

谢谢。在


Tags: import机器字节windowsstructpython3pr2calcsize
2条回答

您还可以通过以更好的方式重新调整这些值来最小化大小:

struct.calcsize("QIIHHB6cc")

产生28,通常情况下,填充是任何结构大小问题的罪魁祸首。请参阅Why isn't sizeof for a struct equal to the sum of sizeof of each member?以获得有关为什么结构大小有时可能比它们看起来更大的好答案。在

对齐。有关详细信息,请参见https://docs.python.org/3/library/struct.html#struct-alignment。在

尝试struct.calcsize("=6cHcBHIIQ")。在

相关问题 更多 >