如何在Java中将十六进制字符串转换为浮点?
如何在Java中将十六进制字符串转换为单精度浮点 例如,如何实施: 浮点f=HextStringToFloatBF80000;//f现在应该包含-1.0 我这样问是因为我试过:如何在Java中将十六进制字符串转换为浮点?,java,string,floating-point,hex,Java,String,Floating Point,Hex,如何在Java中将十六进制字符串转换为单精度浮点 例如,如何实施: 浮点f=HextStringToFloatBF80000;//f现在应该包含-1.0 我这样问是因为我试过: float f = (float)(-1.0); String s = String.format("%08x", Float.floatToRawIntBits(f)); f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue()); 但我有以下例外: java
float f = (float)(-1.0);
String s = String.format("%08x", Float.floatToRawIntBits(f));
f = Float.intBitsToFloat(Integer.valueOf(s,16).intValue());
但我有以下例外:
java.lang.NumberFormatException:对于输入字符串:bf800000您需要将十六进制值转换为一个整数作为练习,然后使用Float.intBitsToFloatint我得到:java.lang.NumberFormatException:对于输入字符串:bf800000在测试时:Float.intBitsToFloatInteger.valueOfBF800000,16.intValue;我得到了异常:java.lang.NumberFormatException:对于输入字符串:BF800000,它溢出了一个int。将其切换为Long.valueOfmyString,16不会引发异常,但会导致-1.0而不是10.0。你确定10.0是正确的结果吗?这个数字可能太大了?尝试使用Long而不是integer。我和john在一起,我得到的是-1.0而不是10.0
public class Test {
public static void main (String[] args) {
String myString = "BF800000";
Long i = Long.parseLong(myString, 16);
Float f = Float.intBitsToFloat(i.intValue());
System.out.println(f);
System.out.println(Integer.toHexString(Float.floatToIntBits(f)));
}
}