我试图从串口读取3字节2的补码值,我试图绘制该值,为此我使用以下
out= BitArray(int = value_1, length = 24).int
当我传递0x7FFFFF中的值而不是value_1时,我得到了正确的结果,即8388607
如果我尝试获取值形式串口(value_1)并将其传递给上面的行我收到以下错误
CreationError:对于长度为24的位串,7fffff对于有符号整数来说太大了。允许的范围是[-8388608,8388607]。
如果我在发送它之前打印value_1进行处理,则打印7fffff
请告诉我上述值传递中的错误
答案 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