[AVR单片机] 浮点转hex问题

[复制链接]
196|5
 楼主 | 2019-9-9 21:32 | 显示全部楼层 |阅读模式
在一个传感器项目里,传感器结果是浮点,我想通过hex传出来,
uint8_t Horas[4];
    sei();
bh1750_init();

    for (;;)

    {
     
   
         float V=314.15;

             
     Horas[0]=((uint8_t*)(&V))[3];
     Horas[1]=((uint8_t*)(&V))[2];
         Horas[2]=((uint8_t*)(&V))[1];
         Horas[3]=((uint8_t*)(&V))[0];
        softuart_send(Horas);
大家能看的明白上面的套路吗?网上找的历程,传出来的数,无法理解314.5应该输出啥呢

使用特权

评论回复
| 2019-9-10 08:34 | 显示全部楼层
这是直接传原始码(任何数在计算机内部都是二进制,你把它当成什么数它就是什么数,取决于使用者),接收到后近按顺序放进32位数里面,然后强制当成浮点数即可

建议使用联合体,那样更直观

使用特权

评论回复
| 2019-9-10 09:28 | 显示全部楼层
发送  memcpy(Horas,(uint8_t*)(&V),4);  直接发送
解析  memcpy((uint8_t*)(&V),Horas,4);  浮点型V的值就是你的数据,不用管

使用特权

评论回复
| 2019-9-10 12:27 | 显示全部楼层
发送端,和接收端的大小端需要注意,如果不一致,需要转换

使用特权

评论回复
| 2019-9-15 12:19 | 显示全部楼层
实际上, 直接将地址强制转换成  char*, 就可以传输了

使用特权

评论回复
| 2019-9-15 15:34 | 显示全部楼层
网上有个浮点转16进制的软件,下载看看。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

关闭

热门推荐上一条 /6 下一条

在线客服 快速回复 返回顶部 返回列表