使用Python中的两个补充

时间:2015-11-23 06:34:49

标签: python-2.7

我使用python作为微控制器上的主要脚本语言。微控制器从I2C总线读取两个8位十六进制数;例如:

out_L = C2
out_H = F2

这些都是在python中作为字符串接收的。 F2C2表示2的补码数。我需要数字的十进制值。

我可以使用

将十六进制字符串转换为二进制字符串
bin_out = "0b" + ( bin(int(hex_out, 16))[2:] ).zfill(8)

现在我必须将二进制值转换为十进制值,这是我被卡住的地方。我首先必须进行两次补码转换然后转换为十进制。因为二进制值仍然是一个字符串,所以我不能对它进行正常的二进制操作,并且不能将其转换为十进制。请协助。我正确地将二进制字符串更改为二进制值的所有努力都为我提供了不正确的值。

2 个答案:

答案 0 :(得分:1)

您可以直接将2的恭维应用于原始的int值:

out_L = "C2"
out_H = "F2"

hex_out = ''.join((out_H, out_L))
value = int(hex_out, 16) # value = 62146
if value> 0x7FFF:
    value -= 0x10000

print value # output -3390

答案 1 :(得分:0)

使用以下命令在python中将二进制转换为十进制:

int(binary_number,2)