Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python结构格式的字符大小,为什么比应该的大?_Python_Python 3.x_Struct_Binary - Fatal编程技术网

Python结构格式的字符大小,为什么比应该的大?

Python结构格式的字符大小,为什么比应该的大?,python,python-3.x,struct,binary,Python,Python 3.x,Struct,Binary,如果要执行以下操作,请问一个简单的问题: import struct struct.calcsize("6cHcBHIIQ") 当我认为应该是28时返回32 通过执行以下操作(缺少Q): 它返回20,这是我所期望的 并且做: import struct struct.calcsize("Q") 返回8,这是正确的 为什么将Q添加到顶部会导致额外的12字节而不是8字节 Python 3,windows机器 谢谢。校准。有关更多详细信息,请参阅 尝试struct.calcsize(“=6cHcB

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

import struct
struct.calcsize("6cHcBHIIQ")
当我认为应该是28时返回32

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

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

并且做:

import struct
struct.calcsize("Q")
返回8,这是正确的

为什么将Q添加到顶部会导致额外的12字节而不是8字节

Python 3,windows机器

谢谢。

校准。有关更多详细信息,请参阅

尝试
struct.calcsize(“=6cHcBHIIQ”)
对齐。有关更多详细信息,请参阅


尝试
struct.calcsize(“=6cHcBHIIQ”)

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

struct.calcsize("QIIHHB6cc")

产生
28
,您通常应该认为填充是任何结构大小问题的罪魁祸首。请参阅,以获取有关为什么结构大小有时可能比看起来的大的好答案。

您也可以通过更好的方式重新调整结构大小来最小化大小:

struct.calcsize("QIIHHB6cc")

产生
28
,您通常应该认为填充是任何结构大小问题的罪魁祸首。请参阅,以获得关于结构大小有时可能比表面看起来大的原因的好答案。

仅更新此问题:相同的行为可以在Ubuntu 14.04上复制。仅更新此问题:相同的行为可以在Ubuntu 14.04上复制。谢谢,这很有意义!谢谢,这很有道理!谢谢你。Id我正在从一个文件中解包字节,那么格式字符串的顺序必须正确,不是吗?谢谢。Id我正在从文件中解包字节,那么格式字符串的顺序必须正确,不是吗?