convert hexadecimal number string to double-precision number in java

hex, java, numbers

Solution

I think you want `Double.longBitsToDouble`, like this:

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);
    }
}

(The fact that `long` is signed in Java makes this more awkward than you'd really want, but hey...)

Problem

how can we convert hexadecimal number string to double-precision number in java ? in matlab it's simple : ``` >> hex2num('c0399999a0000000') ans = -25.6000 ``` but could I do the same things in java also ? I tried parseInt() but this number is not integer.

Original source