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

时间:2012-05-22 19:02:02

标签: java numbers hex

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

在matlab中,它很简单:

>> hex2num('c0399999a0000000')

ans =

  -25.6000

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

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

2 个答案:

答案 0 :(得分:7)

我想你想要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中签名的事实使得这比你真正想要的更尴尬,但是嘿......)

答案 1 :(得分:0)

首先制作一个长片,然后拨打longBitsToDouble