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