【发布时间】:2018-03-03 10:14:32
【问题描述】:
我在 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))
除以 4000.0 后,X 可以在 -0.000025 到 +0.25 的范围内。
当 X 在正范围内时,此逻辑有效。预期 X 时 是负数,我得到一个正数。 我认为当它是一个签名号码时我没有正确处理“msb”。 我应该如何处理负符号数 蟒蛇?
非常感谢任何提示。
【问题讨论】:
-
您可以使用struct module 来执行此操作:具有解包功能。
标签: python bit-manipulation signed