在看这个示例的时候对于如何通过修改字节来改变原来数组里的值,产生了一些混淆,在此记录。
在研究这个示例前需要了解下 array 创建数组所用的类型码参数,以下列出了所能支持的类型码及其存储尺寸:
表格来自 array --- 高效的数值数组 — Python 3.9.6 文档
接下来看示例代码,第一步创建数组:
numbers = array.array('h', [-2, -1, 0, 1, 2])
这一步创建的数组所用的类型码为 h
即有符号短整型(unsigned short),以两个字节表示,而一个字节存储的是八位,也就是说这一步数组所存储的五个数,在内存里是这样的(左侧为低位,右侧为高位):
# -2
0111 1111 1111 1111
# -1
1111 1111 1111 1111
# 0
0000 0000 0000 0000
# 1
1000 0000 0000 0000
# 2
0100 0000 0000 0000
对于 unsig