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



在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'x00x00xd8x00xa2x004x00')

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

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'x00x00x00x00xd8x00x00x00xa2x00x00x004x00x00x00')

使用numpy模块工作,但我宁愿找到一种本地方法来完成目标,因为这是我使用numpy的唯一地方…导入一个大模块只使用一次似乎效率不高。

你想用"(unsigned short)代替"I"(unsigned int)。在C语言中,int可以是2字节或4字节,这取决于体系结构,通常是4字节。您可以在您的机器上检查someArray.itemsize来验证。

最新更新