在python中将字节数组强制转换为有符号短字符
我想将python中的bytearray类型或二进制字符串列表转换为带符号的短列表。事实上,我从以太网中得到一个字节流,我想把它们转换成有符号短码;然而,我在Python中找到的唯一方法是使用在python中将字节数组强制转换为有符号短字符,python,struct,byte,unpack,Python,Struct,Byte,Unpack,我想将python中的bytearray类型或二进制字符串列表转换为带符号的短列表。事实上,我从以太网中得到一个字节流,我想把它们转换成有符号短码;然而,我在Python中找到的唯一方法是使用struct.unpack,这似乎很慢,因为它需要一个格式字符串来确定每个字节的类型 此格式要求分两步进行: 1) 需要为长字节数组生成长字符串 2) 需要在数组中逐个搜索 C++中,下面的简单代码执行了由InBuf:< /P>所包含的整个内存块的作业 OutBuf = short int[len] In
struct.unpack
,这似乎很慢,因为它需要一个格式字符串来确定每个字节的类型
此格式要求分两步进行:
1) 需要为长字节数组生成长字符串
2) 需要在数组中逐个搜索
C++中,下面的简单代码执行了由InBuf:< /P>所包含的整个内存块的作业
OutBuf = short int[len]
InBuf = char[len*2]
memcpy(&OutBuf, &InBuf, len*2)
这将跳过在字节数组中进行格式搜索以及格式字符串构造。有人知道用Python实现这一点的更好方法吗 如果您使用的是Python>3.2,您可以使用:
这不起作用,因为我有一个二进制字符串或一个二进制字符串列表,如
MyBin=b'12wda121q'
或MyBin=[b'12was',b'1231ws']
和int。应该在2字节片上应用from_bytes
,以获得我需要的真正转换。这仍然非常缓慢。
int.from_bytes(b, byteorder='little', signed=True)