python struct的几个问题。请让我知道什么是正确的。
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
答案 0 :(得分:2)
阐述jonrsharpe在评论中发表的答案。
“标准大小”列是指使用标准大小时打包值的大小(以字节为单位);也就是说,当格式字符串以'<&#;,'>','!'中的一个开头时!或' ='。使用本机大小时,打包值的大小取决于平台。
>>> struct.calcsize('l')
8
>>> struct.calcsize('=l')
4
由于填充。使用=不使用填充。
>>> struct.calcsize('=8s2sIII30s32s6s')
90