当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : C++解码二进制float类型遇到困难
帖子发表于 : 2016-12-16 10:51 

注册: 2010-10-31 9:15
帖子: 507
系统: kubuntu 16.04
送出感谢: 0 次
接收感谢: 13
某二进制文件里有一个4字节空间存储的是float类型的数据。在16进制编辑器里查看数据是 E7 45 4B 4E
在ideone.com在线php网站上用代码:
$h = "\xE7\x45\x4B\x4E";
print_r(unpack('f', $h));
可以得到正确的数值 852588992。



可是在C++里:
float b = 0xE7454B4E;
std::cout << b ;
得到的却是3.88008e+09 (与正确的数值 852588992怎么相差那么多)?

我用的是C++,我错在哪里了?


_________________
百度网盘 2048G容量 大放送!
百度网盘资源论坛一键保存资源!


页首
 用户资料  
 
2 楼 
 文章标题 : Re: C++解码二进制float类型遇到困难
帖子发表于 : 2016-12-16 11:54 

注册: 2010-10-31 9:15
帖子: 507
系统: kubuntu 16.04
送出感谢: 0 次
接收感谢: 13
int a = 0x4E4B45E7 ;
float b = *(float*)&a;
std::cout << b;

使用强制类型转换的办法可以实现。


_________________
百度网盘 2048G容量 大放送!
百度网盘资源论坛一键保存资源!


页首
 用户资料  
 
3 楼 
 文章标题 : Re: C++解码二进制float类型遇到困难
帖子发表于 : 2016-12-16 14:36 

注册: 2013-05-26 6:58
帖子: 2128
系统: Debian 9
送出感谢: 874
接收感谢: 29
参见:https://zh.wikipedia.org/zh-cn/%E5%AD%97%E8%8A%82%E5%BA%8F
楼主应该用地址根据正确的字节顺序,逐个用字节值来赋值

Fri Dec 16 14:49:02 CST 2016补充:
侦测到马甲王
弄错了 :em03


_________________
Linux桌面优化综合贴[2017.09.18](欢迎各位补充或指正误区)
[2016.03.10]会C语言但看不懂英文文档的点这里,一个用C语言编写的简陋学习工具
单硬盘通过iso文件实机安装Debian的方法
重启或操作fcitx时失去响应的一个解决方法,不妨试试看


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译