Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Преобразование hex-строки в float или double 
V
    Опции темы
zyu
Дата 24.10.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



Как выполнить следующее преобразование шестнадцатеричной строки в число 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));


PM MAIL   Вверх
garbuz
Дата 24.10.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 3
Всего: 11



Код

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



PM MAIL   Вверх
zyu
Дата 24.10.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 24.10.2009

Репутация: нет
Всего: нет



Спасибо.

intBitsToFloat - вот где суть ответа, теперь буду знать.
PM MAIL   Вверх
ivanovpv
Дата 26.10.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 4
Всего: 28



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

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


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1113 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.