在python中将字节数组转换为signed short

问题描述 投票:0回答:1

我想将python中的bytearray类型或二进制字符串列表转换为签名的短列表。事实上,我从以太网获取一个字节流,我想用签名的短路转换它们;然而,我在Python中找到的唯一方法是使用struct.unpack,这似乎很慢,因为它需要一个格式字符串来确定每个字节的类型。

此格式要求分两步放慢:

1)需要为长字节数组生成一个长字符串

2)需要在数组中逐个搜索。

在C ++中,以下简单代码完成了InBuf包含的整个内存块的工作:

OutBuf = short int[len]
InBuf = char[len*2]
memcpy(&OutBuf, &InBuf, len*2)

这会跳过字节数组中的格式搜索以及格式字符串构造。有没有人知道在Python中这样做的更好方法?

python struct byte unpack
1个回答
1
投票

如果你使用Python> 3.2,你可以使用int.from_bytes

int.from_bytes(b, byteorder='little', signed=True)
© www.soinside.com 2019 - 2024. All rights reserved.