gpt4 book ai didi

python - 在 python 中将 bytearray 转换为 short int

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:01 24 4
gpt4 key购买 nike

我有一个长字节数组

barray=b'\x00\xfe\x4b\x00...

将其转换为 2 字节整数列表的最佳方法是什么?

最佳答案

您可以使用 struct包装:

from struct import unpack

tuple_of_shorts = unpack('h'*(len(barray)//2),barray)

这将产生签名 短裤。对于未签名的,使用 'H'相反:

tuple_of_shorts = unpack('H'*(len(barray)//2),barray)

这会在 little-endian 机器上为您的示例输入生成:

>>> struct.unpack('h'*(len(barray)//2),barray)
(-512, 75)
>>> struct.unpack('H'*(len(barray)//2),barray)
(65024, 75)

如果你想使用big endian 或 little endian,你可以放一个> (大端)或 < (小端)在规范中。例如:

# Big endian
tuple_of_shorts = unpack('>'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('>'+'h'*(len(barray)//2),barray) # signed

# Little endian
tuple_of_shorts = unpack('<'+'H'*(len(barray)//2),barray) # unsigned
tuple_of_shorts = unpack('<'+'h'*(len(barray)//2),barray) # signed

生成:

>>> unpack('>'+'H'*(len(barray)//2),barray)  # big endian, unsigned
(254, 19200)
>>> unpack('>'+'h'*(len(barray)//2),barray) # big endian, signed
(254, 19200)
>>> unpack('<'+'H'*(len(barray)//2),barray) # little endian, unsigned
(65024, 75)
>>> unpack('<'+'h'*(len(barray)//2),barray) # little endian, signed
(-512, 75)

关于python - 在 python 中将 bytearray 转换为 short int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45187101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com