use*_*783 3 python arrays endianness
我有一个Python array('B')(包含从文件中读取的一些数据),我想将其转换为array('H')。我目前正在使用类似于以下代码:
a = array.array('B', f.read())
b = a[16:32]
c = array.array('H', b.tostring())
Run Code Online (Sandbox Code Playgroud)
不幸的是,第三行中的转换使用本机字节顺序,因此将在不同的机器上给出不同的结果。
有什么方法可以使转换始终为低位优先级,而不管本地字节顺序如何?
array.array仅对内部计算有用,因为它始终使用本机字节顺序。有一种byteswap更改顺序的方法。因此,您必须检查sys.byteorder以确定系统字节序,并进行相应的交换。
为了更好地控制订购使用struct:
data = f.read()
c = struct.unpack_from('<8H', data, 16)
Run Code Online (Sandbox Code Playgroud)