我想将python中的bytearray类型或二进制字符串列表转换为签名的短列表。事实上,我从以太网获取一个字节流,我想用签名的短路转换它们;然而,我在Python中找到的唯一方法是使用struct.unpack
,这似乎很慢,因为它需要一个格式字符串来确定每个字节的类型。
此格式要求分两步放慢:
1)需要为长字节数组生成一个长字符串
2)需要在数组中逐个搜索。
在C ++中,以下简单代码完成了InBuf包含的整个内存块的工作:
OutBuf = short int[len]
InBuf = char[len*2]
memcpy(&OutBuf, &InBuf, len*2)
这会跳过字节数组中的格式搜索以及格式字符串构造。有没有人知道在Python中这样做的更好方法?
如果你使用Python> 3.2,你可以使用int.from_bytes
:
int.from_bytes(b, byteorder='little', signed=True)