Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将十六进制字符串转换为浮点?_Java_String_Floating Point_Hex - Fatal编程技术网

如何在Java中将十六进制字符串转换为浮点?

如何在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

如何在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.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)));
  }
}