如何使用Java将32位尾数(IEEE754)转换为十进制数?

时间:2012-02-16 23:08:10

标签: java ieee-754

我有这个例子:

  

0 10000101 00111100000000000000000

并希望将其转换为十进制数。

到目前为止,我已经有了获得指数部分的代码:

String[]hex={"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"};
 String[]binary={"0000","0001","0010","0011","0100","0101","0110","0111","1000","1001","1010","1011","1100","1101","1110","1111"};

String userInput="429E0000";
 String result="";
 for(int i=0;i<userInput.length();i++)
 {
  char temp=userInput.charAt(i);
  String temp2=""+temp+"";
  for(int j=0;j<hex.length;j++)
  {
   if(temp2.equalsIgnoreCase(hex[j]))
   {
    result=result+binary[j];
   }
  }
 }
 System.out.println(result);

    int exponent = Integer.parseInt(result.substring(1,9),2)-127;
    System.out.println(exponent);

Java中是否有内置命令?

2 个答案:

答案 0 :(得分:9)

是的,有一个内置命令,intBitsToFloat将32位int转换为float。您只需将输入解析为int,更简单的方法 - 如果输入采用十六进制格式 - 将直接使用Integer.parseInt()中的基数16,然后intBitsToFloat转换该位模式为float

答案 1 :(得分:2)

Integer.ParseInteger(str, radix)会将二进制数字字符串转换为int ...如果您使用两个作为基数。

然而,Daniels的回答为您提供了一种更好的方法,可以避免使用任何中间字符串表示的数字。