Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中将十六进制字符串转换为双精度字符串_Java_Hex_Double - Fatal编程技术网

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

在Java中将十六进制字符串转换为双精度字符串,java,hex,double,Java,Hex,Double,我想把这个十六进制字符串48985DDFAF27A0转换成双精度。结果应该是49.1903648 我试过了 Double.longBitsToDouble 使用parseInt(x,16)解析十六进制字符串,然后使用intBitsToFloat 上述方法似乎都不起作用 需要建议请您必须将十六进制数的字符串解析为长字符串。完成后,使用double.longBitsToDouble将其转换为double。以下是十六进制数的示例: public class Converter { public sta

我想把这个十六进制字符串48985DDFAF27A0转换成双精度。结果应该是49.1903648

我试过了

  • 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呃那么