Java - 将十六进制转换为 IEEE-754 64 位浮点 - 双精度
我正在尝试将以下十六进制字符串:“41630D54FFF68872”转换为 9988776.0 (float-64)。
对于单精度 float-32,我会这样做:
int intBits = Long.valueOf("hexFloat32", 16).intValue();
float floatValue = Float.intBitsToFloat(intBits);
但这会抛出: java.lang.NumberFormatException: Infinite 或 NaN 当使用上面的 64 位十六进制时。
如何将十六进制转换为使用 IEEE-754 64 位编码的双精度浮点数?
谢谢
I'm trying to convert the following hex string: "41630D54FFF68872" to 9988776.0 (float-64).
With a single precision float-32 I would do:
int intBits = Long.valueOf("hexFloat32", 16).intValue();
float floatValue = Float.intBitsToFloat(intBits);
but this throws a: java.lang.NumberFormatException: Infinite or NaN when using the 64-bits hex above.
How do I convert a hex to a double precision float encoded with IEEE-754 with 64 bits?
Thank you
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想要双精度,因此 Float 不是正确的类 - 这是单精度的。
相反,您需要 Double 类,特别是 Double.longBitsToDouble。
You want double-precision, so Float isn't the right class - that's for single precision.
Instead, you want the Double class, specifically Double.longBitsToDouble.
几乎是正确的。只需省略 valueOf 调用中的双引号即可:
Almost correct. Just omit the double quotes in the valueOf call: