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

Posted

技术标签:

【中文标题】在java中将十六进制数字字符串转换为双精度数字【英文标题】:convert hexadecimal number string to double-precision number in java 【发布时间】:2012-05-22 19:02:02 【问题描述】:

我们如何?

在matlab中很简单:

>> hex2num('c0399999a0000000')

ans =

  -25.6000

但是我也可以在 java 中做同样的事情吗?

我试过 parseInt() 但这个数字不是整数。

【问题讨论】:

【参考方案1】:

我想你想要Double.longBitsToDouble,像这样:

public class Test 
    public static void main(String[] args) 
        String hex = "c0399999a0000000";
        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);
    

long 是用 Java 签名的事实让这比你真正想要的更尴尬,但是嘿......)

【讨论】:

它不工作! - 刚刚在我的 android 应用中尝试过。 @Daniel:“它不起作用”并没有向我们提供任何关于确切您正在尝试什么或确切出了什么问题的信息。我建议您提出一个新问题,在一个简短但完整的示例中显示您的代码,链接到该问题,并解释您所看到的与您期望看到的。 对不起我的不成熟行为,这是你建议的我的问题的链接。 ***.com/q/55295966/10773894【参考方案2】:

先做一个long,然后调用longBitsToDouble

【讨论】:

以上是关于在java中将十六进制数字字符串转换为双精度数字的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中将字符串转换为双精度值?

在 C# 中将十进制数转换为双精度数会产生差异

在 C++ 中将字符串转换为双精度

如何在Java中将浮点数组转换为双精度数组?

在 C# 中将字符串转换为双精度

C# 将字符转换为双精度浮点型