实验环境为 Python3,Python2 不行
用数字 35
来具体说明小端序(little-endian)的存储方式。
数字 35
在十进制中是一个两位数。在计算机内部,数字通常被转换为二进制进行存储和计算。35 的二进制表示是 00100011
现在,假设要将这个数字存储为一个 4 字节(32 位)的无符号整数,并且使用小端序。
- 在小端序中,最低有效字节(LSB)被存储在最低的地址处。
- 对于 32 位整数,有 4 个字节,每个字节 8 位。
所以数字 35
的 32 位小端序表示如下:
地址由低到高:
00100011 (最低有效字节,LSB,即 35 的二进制表示)
00000000 (填充的 0,因为 35 只需要一个字节就能表示,所以其余三个字节都是 0)
00000000 (填充的 0)
00000000 (最高有效字节,MSB,也是填充的 0)
在 Python3 中,可以使用 struct 模块的 pack 函数来将这个数字打包为小端序的二进制字符串:
import struct
# 打包数字 35 为一个 4 字节的小端序无符号整数
packed_value = struct.pack('<I', 35) # 小于号就是 小端序
# 输出打包后的二进制字符串
print(packed_value.hex()) # 输出: 23000000
packed_value.hex()
将打包后的二进制字符串转换为十六进制表示,方便查看。
可以看到,最低地址处的字节是 23(即 00100011
的十六进制表示),后面跟着三个填充的 0 字节。