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

[复制链接]
871|5
 楼主| chuandaoxy 发表于 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应该输出啥呢
ayb_ice 发表于 2019-9-10 08:34 | 显示全部楼层
这是直接传原始码(任何数在计算机内部都是二进制,你把它当成什么数它就是什么数,取决于使用者),接收到后近按顺序放进32位数里面,然后强制当成浮点数即可

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

邪乎风云 发表于 2019-9-10 09:28 | 显示全部楼层
发送  memcpy(Horas,(uint8_t*)(&V),4);  直接发送
解析  memcpy((uint8_t*)(&V),Horas,4);  浮点型V的值就是你的数据,不用管
GeekyGeek 发表于 2019-9-10 12:27 | 显示全部楼层
发送端,和接收端的大小端需要注意,如果不一致,需要转换
airwill 发表于 2019-9-15 12:19 | 显示全部楼层
实际上, 直接将地址强制转换成  char*, 就可以传输了
xyz549040622 发表于 2019-9-15 15:34 来自手机 | 显示全部楼层
网上有个浮点转16进制的软件,下载看看。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

856

主题

1046

帖子

4

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