Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将字节数组强制转换为有符号短字符_Python_Struct_Byte_Unpack - Fatal编程技术网

在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

我想将python中的bytearray类型或二进制字符串列表转换为带符号的短列表。事实上,我从以太网中得到一个字节流,我想把它们转换成有符号短码;然而,我在Python中找到的唯一方法是使用
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)