Как преобразовать 32-битную мантиссу (IEEE754) в десятичное число с помощью Java? - PullRequest
2 голосов
/ 17 февраля 2012

У меня есть это например:

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 ]

9 голосов
/ 17 февраля 2012

Да, есть встроенная команда, intBitsToFloat преобразует 32-разрядный int в float. Вам нужно только проанализировать ваш ввод как int, более простой способ - если ваш ввод в шестнадцатеричном формате - будет напрямую использовать основание 16 в Integer.parseInt(), тогда intBitsToFloat преобразует этот битовый шаблон в float .

2 голосов
/ 17 февраля 2012

Integer.ParseInteger(str, radix) преобразует строку двоичных цифр в int ... если вы используете два в качестве основания.

Однако, ответ Дэниела дает вам лучший подходэто устраняет необходимость в любом промежуточном строковом представлении числа.

...