首页 > 解决方案 > 如何将字节数组或字节对象拆分为 16 位整数?

问题描述

给定一个bytearray长度为 2xN 的对象,如何从该对象中获取 N 个 16 位整数的列表(或数组)?

例如,如果ba定义为:

ba = bytearray([0x01, 0x02, 0x01, 0x03, 0xff, 0xff])

然后转换后的结果应该是这样的:

ia = [0x0102, 0x0103, 0xffff]
print(ia[1]) ==> 0x0103

标签: pythonarrayspython-3.xsplit

解决方案


您可以使用int.from_bytes和一些列表理解。请注意,byte_order需要指定,因此您可能必须根据您的应用程序进行更改。

ba = bytearray([0x01, 0x02, 0x01, 0x03, 0xff, 0xff])
ia = [int.from_bytes(ba[i:i+2], "big") for i in range(0, len(ba), 2)]

推荐阅读