Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.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_Bit Manipulation_Signed - Fatal编程技术网

在Python中将字节转换为有符号数

在Python中将字节转换为有符号数,python,bit-manipulation,signed,Python,Bit Manipulation,Signed,我在Python中遇到了一个问题,我想我不明白Python是如何处理有符号数字的。我的逻辑在Java中工作,其中所有内容都是经过签名的,因此需要Python方面的帮助 我有一些字节是用十六进制编码的,我需要对它们进行解码并将它们解释为数字。定义了协议 假设输入可能如下所示: 原始值='016402570389FFCF008F1205DB2206CA' 我这样解码: bin_bytes = binascii.a2b_hex(raw) lsb = bin_bytes[5] & 0xff ms

我在Python中遇到了一个问题,我想我不明白Python是如何处理有符号数字的。我的逻辑在Java中工作,其中所有内容都是经过签名的,因此需要Python方面的帮助

我有一些字节是用十六进制编码的,我需要对它们进行解码并将它们解释为数字。定义了协议

假设输入可能如下所示:
原始值='016402570389FFCF008F1205DB2206CA' 我这样解码:

bin_bytes = binascii.a2b_hex(raw)
lsb = bin_bytes[5] & 0xff
msb = bin_bytes[6] << 8
aNumber = int(lsb | msb)
print("     X: " + str(aNumber / 4000.0))
bin_bytes=binascii.a2b_十六进制(原始)
lsb=bin_字节[5]&0xff
msb=bin_bytes[6]可以使用Python将字节字符串转换为整数。它为您处理端点和符号扩展。我猜您试图将这个16字节字符串解释为8个2字节有符号整数,以大端字节顺序。此文件的格式字符串为
'>8h
字符告诉Python将字符串解释为big-endian,
8
表示以下数据类型的8,
h
表示有符号短整数

import struct
nums = struct.unpack('>8h', bin_bytes)
现在
nums
是一个整数元组,您可以进一步处理它

我不太确定你的数据是小端还是大端。如果它是little endian,您可以使用
来完成此操作:使用unpack函数。也可能是