将Python数组('B')转换为数组('H') - 总是小端字节序吗?

4

我有一个Python array('B') (包含从文件读取的一些数据),我想将其转换为array('H')。我目前正在使用类似以下代码的代码:

a = array.array('B', f.read())
b = a[16:32]
c = array.array('H', b.tostring())

不幸的是,在第三行中进行的转换使用了本地字节顺序,因此在不同的计算机上会得到不同的结果。

是否有任何方法可以始终将转换设置为小端字节顺序,而不考虑本地字节顺序?

1个回答

8

array.array仅适用于内部计算,因为它总是使用本机字节顺序。有一个方法byteswap可以改变顺序。因此,您必须检查sys.byteorder以确定系统的字节顺序,并相应地交换。

要更好地控制排序,请使用struct

data = f.read()
c = struct.unpack_from('<8H', data, 16)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接