所以我正在阅读Python中的网络,本节将解释有关大端和小端的信息。据我所知,当某些数据大于一个字节时,它们会显示从内存中读取数据的顺序,以便对用户有意义,但这是我不明白的地方。书中说我们可以通过调用十六进制函数来查看数字4253如何存储在内存中:
>>> hex(4253)
'0x109d'
然后它表示十六进制值中的每个数字都是4位,所以2位数字就是一个字节。到目前为止一切都很清楚,值0x109d
是2个字节,显示数字4253
的二进制表示,即0001000010011101
。但是它给出了struct module的pack和unpack方法的一个例子,结果表明值4253
是4个字节。这里出现了混乱,为什么值为4个字节? 2个空字节有什么作用?
>>> struct.pack('<i',4253)
'\x9d\x10\x00\x00'
答案 0 :(得分:1)
明确在documentation of format characters -
中给出“标准大小”列指的是使用标准大小
时打包值的大小(以字节为单位)i - int - 整数 - 4 - (3)
在上面4
是该格式的标准大小(以字节为单位)。
格式字符串(struct.pack
的第一个参数)决定了它需要多少字节。