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

问题描述 投票:-1回答:1

我想将此十六进制字符串48985DDFAF27A0转换为两倍。结果应为49.1903648

我尝试过

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

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

请提供建议

java hex double
1个回答
0
投票

您必须将十六进制数字的字符串解析为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);
}
}
© www.soinside.com 2019 - 2024. All rights reserved.