在 Java 中将十六进制字符串转换为双精度

Convert hexadecimal string to double in Java

我想将此十六进制字符串 48985DDFAF27A0 转换为双精度。结果应该是 49.1903648.

我试过了

  1. Double.longBitsToDouble
  2. 使用 parseInt(x, 16) 解析十六进制字符串,然后使用 intBitsToFloat

以上方法似乎都不起作用。

需要建议请

您必须将十六进制数的字符串解析为long。这样做之后,您可以使用 Double.longBitsToDouble 转换为 double。这是您的十六进制数的示例:

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