Python结构给出不正确的长度

时间:2017-09-05 06:18:46

标签: python python-2.7 struct

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

  1. Document提到l / L的长度为4,但在使用calcsize进行检查时,它给出了8。

    >>> struct.calcsize('l')
    8
    
  2. 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
    

1 个答案:

答案 0 :(得分:2)

阐述jonrsharpe在评论中发表的答案。

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

    >>> struct.calcsize('l')
    8
    
    >>> struct.calcsize('=l')
    4
    
  2. 由于填充。使用=不使用填充。

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