如果我有一个IEEE float hex 424ce027,如何将其转换为十进制?
unsigned char ptr[] = {0x42,0x4c,0xe0,0x27};
怎么办?
float tmp = 51.218899;

最佳答案

也许...

float f = *reinterpret_cast<float*>(ptr);

尽管在我的x86机器上,我还必须反转字符的字节顺序以获得所需的值。
std::reverse(ptr, ptr + 4);
float f = *reinterpret_cast<float*>(ptr);

您可能要使用sizeof(float)而不是4或其他方式来获取大小。您可能需要反转字节的副本,而不是原始字节。不过,这样做有点丑陋。

edit :正如注释中指出的那样,此代码不安全,因为它创建了两个别名相同的内存但类型不同的指针。它可以在特定的编译器和程序上很好地工作,但是不保证该标准。

07-24 09:45
查看更多