python结构的几个问题。请让我知道什么是正确的。


Document提到l / L的长度为4,但是用calcsize检查时,它的长度为8。

>>> struct.calcsize('l')
8

struct module calcsize提供了错误的大小。如果计算单个元素的大小,则其总和为90,但与calcsize一起计算时,则为92。

>>> struct.calcsize('8s2sIII30s32s6s')
92

>>> struct.calcsize('8s')
8

>>> struct.calcsize('2s')
2

>>> struct.calcsize('III')
12

>>> struct.calcsize('30s')
30

>>> struct.calcsize('32s')
32

>>> struct.calcsize('6s')
6

最佳答案

详细的答案由jonrsharpe发表在评论中。


“标准大小”列是指使用标准大小时打包值的大小(以字节为单位);也就是说,当格式字符串以“ ”,“!”之一开头时或“ =”。使用本机大小时,打包值的大小取决于平台。

>>> struct.calcsize('l')
8

>>> struct.calcsize('=l')
4

由于填充。使用=不使用填充。

>>> struct.calcsize('=8s2sIII30s32s6s')
90

10-06 08:52