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]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。