繁体   English   中英

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

[英]Convert Python array('B') to array('H') - always little-endian?

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

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

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

有没有办法使转换始终是little-endian,无论本机字节顺序如何?

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

为了更好地控制排序使用struct

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM