IEEE 754:字节数组转浮点数(单精度),浮点数(单精度)转16进制


参考博客:十六进制转浮点数的通用方法


0,说明:这里不介绍原理,只记录C/C++语言简便的转换方法。

1,字节数组转浮点数(单精度)。指针法

c/c++: float 类型变量 占 4 个 byte,

#include <stdio.h>
#include <stdlib.h>

int main()
{
    unsigned char v_byte[4] = {0xC3, 0xF5, 0x48, 0x40};
    float v_float = *((float *)v_byte);
    printf("v_float = %f", v_float);

    return 0;
}

运行结果:

2, 浮点数(单精度)与 16进制字节数组 互相转换。使用共用体:union

#include <stdio.h>
#include <stdlib.h>

typedef union union_MEM32
{
  float fv;
  struct
  {
    unsigned char _0; // LSB
    unsigned char _1;
    unsigned char _2;
    unsigned char _3; // MSB
  }uint8;
}uMEM32;

int main()
{
    //test 01 ,常量:π=3.14...
    uMEM32 value1;
    value1.fv = 3.14;
    printf("test 01: float->bytes: 0x%X 0x%X 0x%X 0x%X\n", value1.uint8._0, value1.uint8._1, value1.uint8._2, value1.uint8._3);
    
    //test 02,自然常数:e=2.71...
    uMEM32 value2;
    value2.uint8._0 = 0xA4;
    value2.uint8._1 = 0x70;
    value2.uint8._2 = 0x2d;
    value2.uint8._3 = 0x40;
    printf("test 02: bytes->float: %f\n", value2.fv);
    
    return 0;
}

运行结果:

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值