在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
来验证。