在Java中将十六进制字符串转换为双精度字符串
我想把这个十六进制字符串48985DDFAF27A0转换成双精度。结果应该是49.1903648 我试过了在Java中将十六进制字符串转换为双精度字符串,java,hex,double,Java,Hex,Double,我想把这个十六进制字符串48985DDFAF27A0转换成双精度。结果应该是49.1903648 我试过了 Double.longBitsToDouble 使用parseInt(x,16)解析十六进制字符串,然后使用intBitsToFloat 上述方法似乎都不起作用 需要建议请您必须将十六进制数的字符串解析为长字符串。完成后,使用double.longBitsToDouble将其转换为double。以下是十六进制数的示例: public class Converter { public sta
Double.longBitsToDouble
parseInt(x,16)
解析十六进制字符串,然后使用intBitsToFloat
需要建议请您必须将十六进制数的字符串解析为长字符串。完成后,使用
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);
}
}
公共类转换器{
公共静态void main(字符串[]args){
字符串hex=“48985DDFAF27A0”;
long longHex=已解析的无符号十六进制(十六进制);
双d=double.longBitsToDouble(longHex);
系统输出打印ln(d);
}
公共静态长解析无符号十六进制(字符串文本){
如果(text.length()==16){
return(parseUnsignedHex(text.substring(0,1))您尝试了什么?它是如何工作的?这是否回答了您的问题?使用parseInt(x,16)解析十六进制字符串然后使用intBitsToFloat
——这对48985DDFAF27A0
永远不起作用,因为它等于20433727275345824
,大于Integer.MAX\u值
。你怎么知道48985DDFAF27A0应该等于49.1903648?@ArvindKumarAvinash我在网上查过它converter@David记住勾选这个answ呃那么