python中2的补码错误

时间:2016-02-01 06:53:50

标签: python bitarray

我试图从串口读取3字节2的补码值,我试图绘制该值,为此我使用以下

out=  BitArray(int = value_1, length = 24).int

当我传递0x7FFFFF中的值而不是value_1时,我得到了正确的结果,即8388607

如果我尝试获取值形式串口(value_1)并将其传递给上面的行我收到以下错误

CreationError:对于长度为24的位串,7fffff对于有符号整数来说太大了。允许的范围是[-8388608,8388607]。

如果我在发送它之前打印value_1进行处理,则打印7fffff

请告诉我上述值传递中的错误

1 个答案:

答案 0 :(得分:1)

由于你的串行库中的值是一个字符串,你需要通知BitArray表示并摆脱int =

from bitstring import BitArray
i = '7FFFFF'
BitArray('0x%s' % i, length=24).int # Returns 8388607
i = '8FFFFF'
BitArray('0x%s' % i, length=24).int # Returns -7340033
i = 'FFFFFF'
BitArray('0x%s' % i, length=24).int # Returns -1