查看: 76|回复: 12
收起左侧

数据转换

[复制链接]

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:02 | 显示全部楼层 |返回版面|阅读模式

比如说我接收过来的数据16进制32位的43FA0000,此数据符合IEEE574浮点数标准
我把这个数据如果赋值给单片机一个float变量的话,是不是就是浮点数500.00呢?

482

主题

3846

帖子

1万

积分

资深工程师

发表于 2017-7-9 23:05 | 显示全部楼层 |返回版面

等下,我算下啊

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:07 | 显示全部楼层 |返回版面

那如果我把这个数赋值给一个无符号32位整数的话,是不是就是整数10进制的1140457472呢

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:09 | 显示全部楼层 |返回版面
16进制32位的43FA0000换算为10进制是1140457472

473

主题

3812

帖子

1万

积分

资深工程师

发表于 2017-7-9 23:10 | 显示全部楼层 |返回版面
是51吗

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:12 | 显示全部楼层 |返回版面
嗯,编译环境是Keil 4,是51单片机!

比如:
float x;
unsigned long y,z;
/*假设z保存的是我单片机接收过来的数据16进制32位的43FA0000,此数据符合IEEE574浮点数标准*/
/*那么执行如下操作后*/
x=z;
y=z;
//x是不是就自动为浮点数500.00?
//y是不是就是10进制1140457472

462

主题

3825

帖子

1万

积分

资深工程师

发表于 2017-7-9 23:17 | 显示全部楼层 |返回版面

目测你应该是没错的啊

495

主题

3964

帖子

1万

积分

资深工程师

发表于 2017-7-9 23:19 | 显示全部楼层 |返回版面

可以仿真用观察窗口看一看。

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:20 | 显示全部楼层 |返回版面
太困了,明天再说吧,谢谢大家

403

主题

4180

帖子

1万

积分

资深工程师

发表于 2017-7-9 23:22 | 显示全部楼层 |返回版面

将地址强制转换成浮点数指针即可

499

主题

4278

帖子

1万

积分

资深工程师

 楼主| 发表于 2017-7-9 23:24 | 显示全部楼层 |返回版面
其实还是不大明白,我再琢磨琢磨吧,多谢了哈,结贴了先
您需要登录后才可以回帖 登录 | 注册 手机登录

本版积分规则

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