Python 无符号 16 位整数数组元素

Python Unsigned 16-bit Integer Array Elements

仅使用 Python 3 中的 array 模块是否有等效于 numpy.array(someArray, dtype=numpy.uint16) 的模块?我正在尝试构建相当于 Javascript Uint16Array 对象的缓冲区:Uint16Array(someArray).buffer).

这是我目前的情况:

import numpy as np
someArray = []
someArray.append(0)
someArray.append(216)
someArray.append(162)
someArray.append(52)

print(bytearray(np.array(someArray, dtype=np.uint16)))

输出:bytearray(b'\x00\x00\xd8\x00\xa2\x004\x00')

但是,如果我尝试以下操作:

import array as arrayModule
someArray = arrayModule.array("I", [])
someArray.append(0)
someArray.append(216)
someArray.append(162)
someArray.append(52)
print(bytearray(someArray.tobytes()))

输出:bytearray(b'\x00\x00\x00\x00\xd8\x00\x00\x00\xa2\x00\x00\x004\x00\x00\x00')

使用 numpy 模块可行,但我宁愿找到一种本机方法来实现目标,因为这是我唯一使用 numpy 的地方......似乎导入一个大模块只是为了使用它一次似乎效率低下。

您想使用“H”(unsigned short)而不是“I”(unsigned int)。在 C 中,int 可以是 2 个或 4 个字节,具体取决于体系结构,通常是 4 个。您可以检查 someArray.itemsize 以在您的机器上进行验证。