打印
[AVR单片机]

浮点转hex问题

[复制链接]
715|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 | 只看该作者
发送端,和接收端的大小端需要注意,如果不一致,需要转换

使用特权

评论回复
5
airwill| | 2019-9-15 12:19 | 只看该作者
实际上, 直接将地址强制转换成  char*, 就可以传输了

使用特权

评论回复
6
xyz549040622| | 2019-9-15 15:34 | 只看该作者
网上有个浮点转16进制的软件,下载看看。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

854

主题

1043

帖子

4

粉丝