Java - Convert hex to IEEE-754 64-bit float - double precision

非 Y 不嫁゛ 提交于 2019-11-27 08:14:38

问题


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


回答1:


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.




回答2:


Almost correct. Just omit the double quotes in the valueOf call:

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


来源:https://stackoverflow.com/questions/6416269/java-convert-hex-to-ieee-754-64-bit-float-double-precision

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!