将Python array('B')转换为array('H')-总是小尾数吗?

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)

不幸的是,第三行中的转换使用本机字节顺序,因此将在不同的机器上给出不同的结果。

有什么方法可以使转换始终为低位优先级,而不管本地字节顺序如何?

Dan*_*iel 5

array.array仅对内部计算有用,因为它始终使用本机字节顺序。有一种byteswap更改顺序的方法。因此,您必须检查sys.byteorder以确定系统字节序,并进行相应的交换。

为了更好地控制订购使用struct

data = f.read()
c = struct.unpack_from('<8H', data, 16)
Run Code Online (Sandbox Code Playgroud)