我有一个Python array('B')
(包含从文件读取的一些数据),我想将其转换为array('H')
。我目前正在使用类似以下代码的代码:
a = array.array('B', f.read())
b = a[16:32]
c = array.array('H', b.tostring())
不幸的是,在第三行中进行的转换使用了本地字节顺序,因此在不同的计算机上会得到不同的结果。
是否有任何方法可以始终将转换设置为小端字节顺序,而不考虑本地字节顺序?
我有一个Python array('B')
(包含从文件读取的一些数据),我想将其转换为array('H')
。我目前正在使用类似以下代码的代码:
a = array.array('B', f.read())
b = a[16:32]
c = array.array('H', b.tostring())
不幸的是,在第三行中进行的转换使用了本地字节顺序,因此在不同的计算机上会得到不同的结果。
是否有任何方法可以始终将转换设置为小端字节顺序,而不考虑本地字节顺序?
array.array
仅适用于内部计算,因为它总是使用本机字节顺序。有一个方法byteswap
可以改变顺序。因此,您必须检查sys.byteorder
以确定系统的字节顺序,并相应地交换。
要更好地控制排序,请使用struct
:
data = f.read()
c = struct.unpack_from('<8H', data, 16)