【发布时间】:2013-03-15 07:16:59
【问题描述】:
这个想法是为了做和这个几乎一样的事情 http://www.h-schmidt.net/FloatConverter/IEEE754.html
例如,如果我插入 357,我应该得到 0x43b28000
float unsignedToFloat( unsigned int x ) {
unsigned int result = 0;
return *(float*)&result;
}
但是我该怎么做呢?
Convert ieee 754 float to hex with c - printf
我看到了这个,但似乎没有任何好的解决方案。
【问题讨论】:
-
如果你使用 C++,你可以使用 reinterpret_cast。
-
我不明白。您的函数返回一个浮点数。它如何返回
0x43b28000?你的意思是它返回357.0? (您链接的第一页在底部回答了这个问题,在他们的常见问题解答中回答了第二个问题。)这个问题毫无意义。这就像是在问如何将“两蘑菇”中的“二”转化为“两车”中的“二”。没什么可做的。 -
在这种情况下,0x43b28000 是 32 位单的二进制(十六进制)表示。我没有代码,目前没有时间,但如果我稍后有一点时间,我会描述它是如何完成的(如果没有其他人这样做的话)。它只涉及一些移位和一些加/减。
-
@roger_rowland:我的印象是 userXYZ 想知道这是如何工作的,而不是让编译器为他做这件事。
-
@Rudy Velthuis - 好吧。我点击了 OP 帖子中的链接,它描述了 Java 应用程序是如何做到的,这与“reinterpret_cast”的工作原理完全相同。这不是他要问的吗?
标签: floating-point