C++解码二进制float类型遇到困难

C、C++和Java语言
回复
flwwater
帖子: 508
注册时间: 2010-10-31 9:15
系统: kubuntu 18.04
送出感谢: 0
接收感谢: 13 次

C++解码二进制float类型遇到困难

#1

帖子 flwwater » 2016-12-16 10:51

某二进制文件里有一个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容量 大放送!
百度网盘资源论坛一键保存资源!
flwwater
帖子: 508
注册时间: 2010-10-31 9:15
系统: kubuntu 18.04
送出感谢: 0
接收感谢: 13 次

Re: C++解码二进制float类型遇到困难

#2

帖子 flwwater » 2016-12-16 11:54

int a = 0x4E4B45E7 ;
float b = *(float*)&a;
std::cout << b;

使用强制类型转换的办法可以实现。
百度网盘 2048G容量 大放送!
百度网盘资源论坛一键保存资源!
回复

回到 “C/C++/Java”