Python中的二进制数据转换

Python中的二进制数据转换,python,byte,Python,Byte,我正在使用Python从控制器中提取三个8位寄存器。三个寄存器组合构成一个24位整数,因此第一个寄存器/字节是字的位0-7,第二个寄存器/字节是位8-15,第三个寄存器/字节是位16-23。从数学上讲,我认为需要做的是将三个寄存器/字节连接成一个24位二进制字,然后将二进制转换为十进制。但是-我需要严格保持字节格式,因此如果删除其中一个字节字中的前导零-这是一个问题。有什么方法可以做到这一点吗?类似的方法应该适用于无符号量: >>b1、b2、b3=0x80、0x40、0x20 >>>n=(b3>

我正在使用Python从控制器中提取三个8位寄存器。三个寄存器组合构成一个24位整数,因此第一个寄存器/字节是字的位0-7,第二个寄存器/字节是位8-15,第三个寄存器/字节是位16-23。从数学上讲,我认为需要做的是将三个寄存器/字节连接成一个24位二进制字,然后将二进制转换为十进制。但是-我需要严格保持字节格式,因此如果删除其中一个字节字中的前导零-这是一个问题。有什么方法可以做到这一点吗?

类似的方法应该适用于无符号量:

>>b1、b2、b3=0x80、0x40、0x20
>>>n=(b3>n
2113664
>>>格式(n',d')
'2,113,664'
>>>十六进制(n)
“0x204080”
>>>垃圾箱(n)
“0B100000010000000”

请提供一个输入/所需输出的示例,说明您尝试的输入/输出,并指定您使用的python版本。例如,假设输入Reg 3=123,(b'011111011),Reg 2=230,b'11100110'和Reg 1=15,b(000011111)。输出的24位字将是b'011111110000011111'=8119823。例如,我尝试了“bin()”,但bin(15)刚回来”(1111)“我需要打包4个0以保留完整的8位宽度。使用Python 2.7。连接字节,我如何将二进制转换回十进制?
n
在我的回答中是一个Python整数,它始终作为二进制数据存储在内部,但默认情况下,1的值通常以十进制显示或打印。我认为添加对
hex()
bin()
函数的调用以同时在这些基函数中显示结果,可以更清楚地表明该技术是有效的-显然我是错误的。请参阅更新的答案。感谢澄清-抱歉-我有点慢。尝试将我的Fortran知识翻译成新语言:-)