如何根据IEEE-754格式将十六进制值转换为单精度浮点数以及双精度浮点数

时间:2011-05-09 13:03:44

标签: java ieee-754

有人可以告诉我如何根据java中的IEEE-754格式将Hex字符串转换为相应的单精度或双精度浮点数吗?

例如: “4682E989” 和 “A4703D4A0B0B7441”

BR suppi

2 个答案:

答案 0 :(得分:4)

请参阅Double.longbitsToDouble

  

返回与给定位表示相对应的double值。根据IEEE 754浮点“双格式”位布局,该参数被认为是浮点值的表示。

您可以使用 Long.parseLong long从十六进制表示中获取new BigInteger(s, 16).longValue()(正如Peter Lawrey指出的那样)。 Long.parseLong不会这样做,因为它在大于2 ^ 63-1的数字上失败。

答案 1 :(得分:0)

这是正确答案的例子。

十六进制值 = 440B1831

预期二进制 = 1000100000010110001100000110001

预期浮点数= 556.378

  Long decimal  =new BigInteger("440B1831", 16).longValue();
   String binary1 = java.lang.Long.toBinaryString(decimal);
    System.out.println(binary1);
     int intBits = Integer.parseInt(binary1, 2);
    float myFloat = Float.intBitsToFloat(intBits);
   System.out.println( myFloat);