在 Java 中将十六进制字符串转换为双精度
Convert hexadecimal string to double in Java
我想将此十六进制字符串 48985DDFAF27A0 转换为双精度。结果应该是 49.1903648.
我试过了
Double.longBitsToDouble
- 使用
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);
}
}
我想将此十六进制字符串 48985DDFAF27A0 转换为双精度。结果应该是 49.1903648.
我试过了
Double.longBitsToDouble
- 使用
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);
}
}