我有一个问题,我从0-255获得了两个表示为int的字节,两个字节应该表示一个值。现在,我正在这样做,但是要花很长时间。有提示吗?
bin_string = '0b' + bin(int(second_byte))[2:].zfill(8) + bin(int(first_byte))[2:].zfill(8)
result = float(literal_eval(bin_string))
example:
203 -> 11001011
101 -> 01100101
-> 1100101101100101 -> 52069
我觉得可能有一个简单的数学公式,但我似乎无法弄清楚...
答案 0 :(得分:3)
将第二个字节左移8位,然后将其与第一个字节按位或:
(second_byte << 8) | first_byte
要获得额外的安全性,请按位与AND将两个字节都钳位到[0, 255]
:
((second_byte & 0xFF) << 8) | (first_byte & 0xFF)
答案 1 :(得分:0)
二进制移位运算符:
(second_byte << 8) + first_byte
与:
second_byte * 256 + first_byte
答案 2 :(得分:0)
如果字节数为bytes
,则i。 e。一串字节,或者如果您想将字节放入一个字节,那么您应该看看struct
模块:
struct.unpack('h', b'\x00\x01')
将根据格式(256,)
返回b'\x00\x01'
,它是字符串'h'
中所有未包装内容的元组。