在Python中将字节转换为有符号数
我在Python中遇到了一个问题,我想我不明白Python是如何处理有符号数字的。我的逻辑在Java中工作,其中所有内容都是经过签名的,因此需要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
原始值='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函数。也可能是