2

Javaで16進数の文字列を倍精度の数値に変換するにはどうすればよいですか?

matlabでは簡単です:

>> hex2num('c0399999a0000000')

ans =

  -25.6000

しかし、Javaでも同じことができますか?

parseInt()を試しましたが、この数値は整数ではありません。

4

2 に答える 2

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

(Javaで署名されているという事実longは、これをあなたが本当に望んでいるよりも厄介にしますが、ちょっと...)

于 2012-05-22T19:10:37.590 に答える
0

最初にlongを作成し、次にlongBitsToDoubleを呼び出します

于 2012-05-22T19:06:56.373 に答える