含16进制IEEE754数据的字符串转换为十进制浮点数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: jiangshh

[未解决] 含16进制IEEE754数据的字符串转换为十进制浮点数

[复制链接]
发表于 2021-7-16 22:17 | 显示全部楼层
关公战秦琼 发表于 2021-7-14 21:26
请问如何访问?我也是需要把float类型转换成IEEE标准的16进制字符串

举个栗子,假定你知道怎么访问内存:

float fv= 1.234f;
uint8_t * ptr= (uint8_t *)&fv;
char str[32];
sprint(str, "%02X %02X %02X %02X", ptr[0], ptr[1], ptr[2], ptr[3]);
Serial.println(str);
发表于 2021-10-21 16:52 | 显示全部楼层
jiangshh 发表于 2019-5-30 09:11
这是我修改后的代码,功能已完善,供大家参考试用。

String angle = ""; //用于储存串口读取的字符串

楼主帮了我的大忙,请受我一拜
发表于 2022-4-7 23:30 | 显示全部楼层
我是新新新新手 发表于 2021-7-5 16:49
你好,我是用arduino的,跟楼主一样接收回来是4字节字符,需要转换成10进制浮点数,但找了好久没找到可转 ...

老哥,你的问题解决了吗,我也是同样的问题
发表于 2022-5-4 17:22 | 显示全部楼层
发现不能用了  小白还没有学会 有人教一下吗
发表于 2022-5-5 14:19 | 显示全部楼层
  1. /接收到的串口数据: 01 04 04 3F E8 F5 C3 70 A5
  2.         angle_read = angle.substring(3,7);//提取angle的含有效数据字符串 如下
  3.         // 3F E8 F5 C3 转成16进制(IEEE754) 转十进制浮点 1.82
  4.         // ?? 问题,怎么把  3F E8 F5 C3 这个字符串变量赋值给 下放的 char类型 src[] 数组中
  5.         unsigned char src[] = {0xc3, 0xf5, 0xe8, 0x3f};  // 这是我手动写的 测试下面是可以的
  6.         float dst = *(float *)src; //此时 dst值 为 1.82
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 07:45 , Processed in 0.069459 second(s), 13 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表