250
00 00 7a 43
00000000 00000000 01111010 01000011
-250
<00> 00 00 7a c300000000 00000000 01111010 11000011
0
<00> 00 00 00 0000000000 00000000 00000000 00000000
200
00 00 48 43
00000000 00000000 01001000 0011 1111
250.1
9a 19 7a 43
10011010 00011001 01111010 01000011
答案 0 :(得分:1)
您显示的值表示您的数据存储为little-endian。例如,250.0的32位IEEE浮点字符串为十六进制437a0000
。相应的little-endian字节序列是:
00 00 7a 43
这正是您所看到的。
我认为问题是Python通常对其float
类型使用双精度,即64位浮点值。
正确解包这些值的一种方法是使用struct
:
>>> import struct
>>> struct.unpack('>f', '\x43\x7a\x00\x00')[0]
250.0
>>>
以上适用于Python 2.在Python 3中,您需要一个缓冲区,例如:
>>> struct.unpack('>f', b'\x43\x7a\x00\x00')[0]
250.0
>>>
或:
>>> struct.unpack('>f', bytes([0x43, 0x7a, 0x00, 0x00]))[0]
250.0
>>>