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
以在您的机器上进行验证。
仅使用 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
以在您的机器上进行验证。