python 中的 2 的补码错误

2`s complement error in python

我正在尝试从串行端口读取一个 3 字节的 2`s 补码值,我正在尝试绘制该值,为此我使用以下

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

当我传递 0x7FFFFF 中的值时 value_1 我得到的正确结果是 8388607

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

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

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

请告诉我上面的值传递有什么问题

由于串行库中的值是一个字符串,因此您需要将表示形式告知 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