打印
[PIC®/AVR®/dsPIC®产品]

从串口读出的16位的数怎么转换成单精度浮点型

[复制链接]
4253|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tc793069303|  楼主 | 2015-2-2 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有没有明白人啊?解惑啊
沙发
ayb_ice| | 2015-2-2 17:17 | 只看该作者
16位是有符号还是无符号呢

直接赋值给浮点数

float f32;

f32 = (unsigned short)uart_16;

f32 = (signed short)uart_16;

使用特权

评论回复
板凳
tc793069303|  楼主 | 2015-2-2 21:24 | 只看该作者
ayb_ice 发表于 2015-2-2 17:17
16位是有符号还是无符号呢

直接赋值给浮点数

就是串口助手输出的十六位数 类似: 8080 这样的

使用特权

评论回复
地板
ayb_ice| | 2015-2-3 08:03 | 只看该作者
tc793069303 发表于 2015-2-2 21:24
就是串口助手输出的十六位数 类似: 8080 这样的

就是串口的数据也要有格式,是ASCII码还是16进制,是有符号还是无符号。。。

需要有约定才可以的,否则一百个人有一百个理解。。。

使用特权

评论回复
5
smtqt| | 2015-2-4 09:57 | 只看该作者
要是你不知道发送出来的东西是当做浮点型的哪部分数据,你没法转换(地板回帖已经说了)。
举个例子:我要发送一个float数据(4字节),需要将这个4字节,分别赋值给4个char型数据(一般定义一个4元素一维数组就够用了),按顺序发送这个数组;接收时用一个4元char型数组,按顺序接收,再将这个数组,按这个顺序赋值到一个float型数据上就完成了一次float数据的发送。发送过程中不用去管发送的8位*4个数据的正负,反正最后都是要转化掉的,float本身就是有正负的,也不用管,只要保证8位*4个的数据顺序正确就行了。至于1个float转4个char,4个char转1个float,需要用到指针和强制转换,先不详说。所以,接收后怎么处理接收的数据,需要知道发送时,是怎么处理的数据,就想硬件编解码一样。

使用特权

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

本版积分规则

4

主题

36

帖子

1

粉丝