分页: 1 / 1

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

发表于 : 2016-12-16 10:51
flwwater
某二进制文件里有一个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++,我错在哪里了?

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

发表于 : 2016-12-16 11:54
flwwater
int a = 0x4E4B45E7 ;
float b = *(float*)&a;
std::cout << b;

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

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

发表于 : 2016-12-16 14:36
科学之子
参见:https://zh.wikipedia.org/zh-cn/%E5%AD%9 ... 2%E5%BA%8F
楼主应该用地址根据正确的字节顺序,逐个用字节值来赋值

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