完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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函数的 |
|
相关推荐
12个回答
|
|
一. 你上面的应该是个通信的例子吧, 联合体的作用 实际上是 把 这个浮点型在内存空间的存储信息[字节流] 用字节表示出来。 在一帧数据中发送出去, 收到 一样的解法即可。
特点:1 这个字节流 给你看 还是乱码。2 效率高,不用转换步骤之类的。 3 长度固定, float 占4个字节, 这是固定的, 而用sprintf转字符串 是转成 ascII , 特点:1 这是给你看的, 你能看懂。 2 效率很差 调用字符串处理,接收端想转回去也得调用处理, 3 不一定是几个字节。 。 |
|
|
|
联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量
是fp_float fp_char[4] 公用一段内存,flToChar.fp_float = fFivVoltA;之后 也就是 赋给了fp_char[4] 然后在这个字符数组中取值,然后由于其存储方式,从后往前取出来 放到 缓存区 |
|
|
|
sprintf ( (char*)szTemp, "Voltage: %fV rn",fVoltage ); 和这句话的作用一样么
|
|
|
|
|
|
|
|
那我 关于 这段程序理解对么(一楼的内容),两种数据类型公用一段内存,把浮点存进去,就可以取出字符的了
|
|
|
|
有点言简意赅啊
|
|
|
|
说 的 太好了 ,瞬间明白了,字节流,在我看是乱码,收到采用同样的解法即可,嗯 是这样的,谢谢思密达!
|
|
|
|
想了一天,老师这两句话瞬间把我的任督二脉打通了,谢谢++
|
|
|
|
|
|
以前一直没想到使用联合体的方式,又学到一招。。
|
|
|
|
老师,赋值时 为什么是3210 的 顺序,不是0123昂,由什么决定的,给点提示,我自己理解
|
|
|
|
根据 大小端模式决定的, 你百度“大小端”
|
|
|
|
只有小组成员才能发言,加入小组>>
请问下图大疆lightbridge2遥控器主板电源芯片型号是什么?
4442 浏览 1 评论
使用常见的二极管、三极管和mos做MCU和模组的电平转换电路,但是模组和MCU无法正常通信,为什么?
313浏览 2评论
为了提高USIM卡电路的可靠性和稳定性,在电路设计中须注意的点有哪些?
297浏览 2评论
312浏览 2评论
314浏览 2评论
352浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 07:53 , Processed in 1.228607 second(s), Total 102, Slave 84 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号