Преобразовать шестнадцатеричную строку в удвоенную в Java - PullRequest
0 голосов
/ 25 февраля 2020

Я хочу преобразовать эту шестнадцатеричную строку 48985DDFAF27A0 в удвоение. Результат должен быть 49.1903648 .

Я пытался

  1. Double.longBitsToDouble
  2. Синтаксический анализ шестнадцатеричной строки с помощью parseInt(x, 16) и последующее использование intBitsToFloat

Кажется, что ни один из вышеперечисленных подходов не работает.

Нужны предложения, пожалуйста

1 Ответ

0 голосов
/ 25 февраля 2020

Вы должны разобрать строку шестнадцатеричного числа в long. После этого вы конвертируете в удвоение с помощью Double.longBitsToDouble. Вот пример вашего шестнадцатеричного числа:

public class Converter {
public static void main(String[] args) {
    String hex = "48985DDFAF27A0";
    long longHex = parseUnsignedHex(hex);
    double d =   Double.longBitsToDouble(longHex);
    System.out.println(d);
 }

public static long parseUnsignedHex(String text) {
    if (text.length() == 16) {
        return  (parseUnsignedHex(text.substring(0, 1)) << 60)
                | parseUnsignedHex(text.substring(1));
    }
    return Long.parseLong(text, 16);
}
}
...