OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5327|回复: 14

浮点数 转换 字符串 求助

[复制链接]

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
发表于 2014-10-20 10:31:31 | 显示全部楼层 |阅读模式
5金钱
float fFivVoltA ;//采集的电压       
    union  conVer
{
    float  fp_float;
    uint8_t fp_char[4];

} flToChar;
定义了一个联合体,变量为flToChar,有两个成员
            flToChar.fp_float = fFivVoltA;
            rl_ansBuff[5] = flToChar.fp_char[3];
            rl_ansBuff[6] = flToChar.fp_char[2];
            rl_ansBuff[7] = flToChar.fp_char[1];
            rl_ansBuff[8] = flToChar.fp_char[0];
//这就不懂了
查阅一下还有建议使用sprintf函数的

最佳答案

查看完整内容[请看2#楼]

一.  你上面的应该是个通信的例子吧, 联合体的作用 实际上是 把 这个浮点型在内存空间的存储信息[字节流] 用字节表示出来。 在一帧数据中发送出去, 收到 一样的解法即可。  特点:1 这个字节流 给你看 还是乱码。2 效率高,不用转换步骤之类的。  3 长度固定, float 占4个字节, 这是固定的,  而用sprintf转 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-10-20 10:31:32 | 显示全部楼层
一.  你上面的应该是个通信的例子吧, 联合体的作用 实际上是 把 这个浮点型在内存空间的存储信息[字节流] 用字节表示出来。 在一帧数据中发送出去, 收到 一样的解法即可。 
特点:1 这个字节流 给你看 还是乱码。2 效率高,不用转换步骤之类的。  3 长度固定, float 占4个字节, 这是固定的, 

而用sprintf转字符串 是转成 ascII ,
特点:1 这是给你看的, 你能看懂。 2 效率很差 调用字符串处理,接收端想转回去也得调用处理, 3  不一定是几个字节。 。
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 11:20:29 | 显示全部楼层
联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型  和不同长度的变量
是fp_float fp_char[4] 公用一段内存,flToChar.fp_float = fFivVoltA;之后 也就是 赋给了fp_char[4] 然后在这个字符数组中取值,然后由于其存储方式,从后往前取出来 放到 缓存区
回复

使用道具 举报

70

主题

6697

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12691
金钱
12691
注册时间
2012-11-26
在线时间
3710 小时
发表于 2014-10-20 11:36:27 | 显示全部楼层
你这是浮点数转16进制的   就是这么用的     其实都2进制  读取方法不同而已
学无止境
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 11:46:01 | 显示全部楼层
回复【3楼】jermy_z:
---------------------------------
sprintf ( (char*)szTemp, "Voltage: %fV \r\n",fVoltage );      和这句话的作用一样么
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-10-20 14:20:34 | 显示全部楼层
回复【4楼】盒子:
---------------------------------
这是两回事!

sprintf 是  转成字符串

而 联合体是公用一片内存
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 14:30:33 | 显示全部楼层
回复【5楼】aleda303:
---------------------------------
嗯,但是 都可以将 浮点 转成 字符  是吧
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 14:38:44 | 显示全部楼层
回复【5楼】aleda303:
---------------------------------
那我 关于 这段程序理解对么(一楼的内容),两种数据类型公用一段内存,把浮点存进去,就可以取出字符的了
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 14:39:08 | 显示全部楼层
回复【3楼】jermy_z:
---------------------------------
有点言简意赅啊
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 15:14:27 | 显示全部楼层
说 的 太好了 ,瞬间明白了,字节流,在我看是乱码,收到采用同样的解法即可,嗯 是这样的,谢谢思密达!
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2014-10-20 15:31:10 | 显示全部楼层
回复【9楼】aleda303:
---------------------------------
想了一天,老师这两句话瞬间把我的任督二脉打通了,谢谢++
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2014-10-21 09:57:49 | 显示全部楼层
回复【11楼】盒子:
---------------------------------
客气
回复

使用道具 举报

6

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2014-4-25
在线时间
17 小时
发表于 2014-10-23 17:23:21 | 显示全部楼层
以前一直没想到使用联合体的方式,又学到一招。。
学习会使你永远立于不败之地。
回复

使用道具 举报

85

主题

378

帖子

0

精华

高级会员

Rank: 4

积分
902
金钱
902
注册时间
2013-4-29
在线时间
87 小时
 楼主| 发表于 2015-1-29 14:07:25 | 显示全部楼层
回复【9楼】aleda303:
---------------------------------
老师,赋值时 为什么是3210 的 顺序,不是0123昂,由什么决定的,给点提示,我自己理解
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2015-2-15 15:42:59 | 显示全部楼层
回复【14楼】盒子:
---------------------------------
根据 大小端模式决定的, 你百度“大小端”
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 13:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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