浮点数与十六进制互相转换

利用强制转换类型实现。

浮点数转十六进制

  • 实现:

    1
    2
    float f = 123.45f;
    unsigned char *hex = (unsigned char *)&f;
  • 打印输出:

    1
    2
    3
    for(int i = 0; i < 4; i++) 
    printf("0x%02X ", hex[i]);
    printf("\n");

十六进制转浮点数

  • 实现:

    1
    2
    unsigned char hex[] = { 0x66, 0xE6, 0xF6, 0x42 };
    float f = *(float *)hex;
  • 打印输出:

    1
    2
    printf("%g\n", f); 
    // %g参数按浮点精度四舍五入去除多余的0.