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

软件和网站开发以及相关技术探讨
回复
头像
flwwater
帖子: 759
注册时间: 2010-10-31 9:15
系统: kubuntu 24.04

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++,我错在哪里了?
个人收藏的数百个精美动态壁纸:
https://url17.ctfile.com/d/15983117-593 ... 768?p=6220
(访问密码:6220


个人收藏的经典国语音乐和纯音乐(钢琴,笛子,二胡等):
https://url17.ctfile.com/d/15983117-446 ... 33e?p=6220
(访问密码:6220



如果访问密码不对,可试试这个密码 566816
头像
flwwater
帖子: 759
注册时间: 2010-10-31 9:15
系统: kubuntu 24.04

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

#2

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

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

使用强制类型转换的办法可以实现。
个人收藏的数百个精美动态壁纸:
https://url17.ctfile.com/d/15983117-593 ... 768?p=6220
(访问密码:6220


个人收藏的经典国语音乐和纯音乐(钢琴,笛子,二胡等):
https://url17.ctfile.com/d/15983117-446 ... 33e?p=6220
(访问密码:6220



如果访问密码不对,可试试这个密码 566816
回复