打印

十六进制转浮点数

[复制链接]
1880|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
歇斯底里|  楼主 | 2016-8-14 10:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 歇斯底里 于 2016-8-15 12:34 编辑

通过STM32单片机编程实现串口2连485向传感器发送读取测量数据的指令,传感器返回一些数据,我提取了其中的8位十六进制数的测量值通过串口1发送到蓝牙端接收数据,蓝牙再把数据发到APP端,四位十六进制是一个测量值,主函数如图1。现在的问题是我接收的一直是十六进制的数,如图二,但是APP那里要指数浮点数的格式数据才行,如图3.我自己代码改了好久就是达不到效果,求教。@dirtwillfly

相关帖子

沙发
dirtwillfly| | 2016-8-14 11:38 | 只看该作者

4个16进制数能转化为带小数点的浮点数,就可以显示为指数浮点数啊。

使用特权

评论回复
板凳
歇斯底里|  楼主 | 2016-8-14 12:51 | 只看该作者
dirtwillfly 发表于 2016-8-14 11:38
4个16进制数能转化为带小数点的浮点数,就可以显示为指数浮点数啊。

是这样改吗 我看网上有人这样写但是我试了没反应

111.png (59.44 KB )

111.png

使用特权

评论回复
地板
歇斯底里|  楼主 | 2016-8-14 12:51 | 只看该作者
歇斯底里 发表于 2016-8-14 12:51
是这样改吗 我看网上有人这样写但是我试了没反应

@dirtwillfly

使用特权

评论回复
5
dirtwillfly| | 2016-8-14 14:07 | 只看该作者

你弄的好复杂。一般用类似printf("%e\t",test)的函数就可以把数据以指数形式输出到控制台或者字符串变量。
不懂你到底要输出字符串还是数值。。。

使用特权

评论回复
6
歇斯底里|  楼主 | 2016-8-14 15:25 | 只看该作者
dirtwillfly 发表于 2016-8-14 14:07
你弄的好复杂。一般用类似printf("%e\t",test)的函数就可以把数据以指数形式输出到控制台或者字符串变量 ...

可能我表述的不好 就是要显示file:///C:\Users\Administrator.USER-20151031AA\AppData\Roaming\Tencent\Users\864063529\QQ\WinTemp\RichOle\AHJ@F60AO7WGYHK}]G4(@E6.png图片这样的样子 这样的数据给他们才有效@dirtwillfly  

AHJ@F60AO7WGYHK}]G4(@E6.png (7.57 KB )

AHJ@F60AO7WGYHK}]G4(@E6.png

使用特权

评论回复
7
linqing171| | 2016-8-14 22:01 | 只看该作者
float a=1.0f;
unsigned char * b =(unsigned char*)&a;
Uart2SendByte(b[0]);
Uart2SendByte(b[1]);
Uart2SendByte(b[2]);
Uart2SendByte(b[3]);
Uart2SendByte(b[3]);
Uart2SendByte(b[2]);
Uart2SendByte(b[1]);
Uart2SendByte(b[0]);

使用特权

评论回复
8
歇斯底里|  楼主 | 2016-8-15 09:00 | 只看该作者
linqing171 发表于 2016-8-14 22:01
float a=1.0f;
unsigned char * b =(unsigned char*)&a;
Uart2SendByte(b[0]);

Uart2SendByte(b[0]);
Uart2SendByte(b[1]);
Uart2SendByte(b[2]);
Uart2SendByte(b[3]);
Uart2SendByte(b[3]);
Uart2SendByte(b[2]);
Uart2SendByte(b[1]);
Uart2SendByte(b[0]);这个什么意思发两次吗@dirtwillfly @linqing171

使用特权

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

本版积分规则

22

主题

70

帖子

1

粉丝