Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Преобразование hex-строки в float или double


Автор: zyu 24.10.2009, 12:19
Как выполнить следующее преобразование шестнадцатеричной строки в число float или double ?

Код


//Пример входной строки (физическое представление числа в памяти)
String hexStr = "46CE8A7F";

//...преобразование шестнадцатеричной строки в число с плавающей запятой (float) или (double)...
//возникает исключение
//java.lang.NumberFormatException: For input string: "46CE8A7F"
//        at sun.misc.FloatingDecimal.parseHexString(FloatingDecimal.java:1872)
//        at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1046)
float f = Float.valueOf(hexStr);

//вывод результата преобразования
jLabel.setText(Float.toString(f));


Автор: garbuz 24.10.2009, 13:55
Код

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)));
  }
}



Автор: zyu 24.10.2009, 14:18
Спасибо.

intBitsToFloat - вот где суть ответа, теперь буду знать.

Автор: ivanovpv 26.10.2009, 09:26
Все верно, но если HEX пришел из другой платформы/ОС - то необходимо удостовериться в Low Endian или Big Endian (по русски выражаясь на разных платформах старший бит может находиться или слева или справа).

Если же HEX сгенерирован Java - то без разницы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)