float和4字节char互转

按照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.packstruct.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]

你可能感兴趣的:(float和4字节char互转)