[PIC®/AVR®/dsPIC®产品] 从串口读出的16位的数怎么转换成单精度浮点型

[复制链接]
4647|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进制,是有符号还是无符号。。。

需要有约定才可以的,否则一百个人有一百个理解。。。
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

粉丝
快速回复 在线客服 返回列表 返回顶部