我遇到一个问题,我得到两个字节表示为 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
Run Code Online (Sandbox Code Playgroud)
我觉得可能有一个简单的数学公式,但我似乎无法弄清楚......
将第二个字节左移 8 位,并与第一个字节按位或:
(second_byte << 8) | first_byte
Run Code Online (Sandbox Code Playgroud)
[0, 255]为了额外的安全性,使用按位 AND将两个字节钳位:
((second_byte & 0xFF) << 8) | (first_byte & 0xFF)
Run Code Online (Sandbox Code Playgroud)