存储在内存中的数字

Numbers stored in memory

所以我正在 Python 中阅读有关网络的内容,该部分正在解释大端和小端。我知道当某些数据大于一个字节时,它们会显示从内存中读取数据的顺序,以便对用户有意义,但这是我不明白的。书上说我们可以通过调用hex函数看看4253这个数字是如何存储在内存中的:

>>> hex(4253)
'0x109d'

然后它说十六进制值中的每个数字都是 4 位,因此 2 位数字将是一个字节。到目前为止,一切都很清楚,值 0x109d 是 2 个字节,如数字 4253 的二进制表示形式 0001000010011101 所示。但是随后它给出了结构模块的 pack 和 unpack 方法的示例,结果 4253 的值是 4 个字节。困惑来了,为什么值是 4 个字节? 2 个空字节有什么作用?

>>> struct.pack('<i',4253)
'\x9d\x10\x00\x00'

documentation of format characters-

中给出的很清楚

The ‘Standard size’ column refers to the size of the packed value in bytes when using standard size

i - int - integer - 4 - (3)

上面的 4 是以字节为单位的该格式的标准大小。

格式字符串(struct.pack 的第一个参数)决定了它需要多少字节。