2009-07-02 2 views
6

Как преобразовать шестнадцатеричную строку в одинарную точку с плавающей запятой в Java?Как преобразовать шестнадцатеричную строку в float в Java?

Например, как реализовать:

поплавка F = HexStringToFloat ("BF800000"); // е должны теперь содержать -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 "

ответ

16
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))); 
    } 
} 
+0

я получаю: java.lang.NumberFormatException: Для ввода строки: "BF800000" – apalopohapa

+0

При тестировании: Float.intBitsToFloat (Integer.valueOf ("BF800000", 16) .intValue()); Получалось исключение: java.lang.NumberFormatException: для строки ввода: «BF800000» – apalopohapa

+0

Это переполнение int. Переключение на Long.valueOf (myString, 16) не генерирует исключение, но приводит к -1.0 вместо 10.0. Вы уверены, что 10.0 - правильный результат? –

2

Вы должны преобразовать шестнадцатеричное значение к междунар (слева в качестве упражнения), а затем использовать Float.intBitsToFloat(int)

Смежные вопросы