Java – 将hex转换为IEEE-754 64位浮点数 – 双精度

我正在尝试将以下hex字符串:“41630D54FFF68872”转换为9988776.0(float-64)。

使用单精度浮子-32我会这样做:

int intBits = Long.valueOf("hexFloat32", 16).intValue(); float floatValue = Float.intBitsToFloat(intBits); 

但是抛出一个:java.lang.NumberFormatException:使用上面的64位hex时的无限或NaN。

如何将hex转换为使用64位IEEE-754编码的双精度浮点数?

谢谢

你想要双精度,所以Float不是正确的类 – 那就是单精度。

相反,你想要Double类,特别是Double.longBitsToDouble 。

差不多正确。 只需省略valueOf调用中的双引号:

 String hexString = "41630D54FFF68872"; long longBits = Long.valueOf(hexString,16).longValue(); double doubleValue = Double.longBitsToDouble(longBits); System.out.println( "double float hexString is = " + doubleValue );