按照IEEE754
标准的规定,float
类型实际用4字节存储,比如50.0
对应4字节0x00 0x00 0x48 0x42
(注意大小端),用C语言转换只要memcpy
就行。
unsigned char c[4] = {0x00,0x00,0x48,0x42};
float f;
memcpy(&f,c,4);
printf("%.3f\n", f);
上面打印结果就是50.000
。如果要把float
转换为4字节数组同样可以用memcpy。
在python
中的方法如下:使用struct.pack
和struct.unpack
即可。
import struct
def byte2float(x):
return struct.unpack('f', struct.pack('4B', *x))[0]
def float2byte(f):
return [hex(i) for i in struct.pack('f', f)]
if __name__ == '__main__':
print(byte2float([0x00, 0x00, 0x48, 0x42])) # 50.0
print(float2byte(50)) # [0x00, 0x00, 0x48, 0x42]