Javaで16進数の文字列を倍精度の数値に変換するにはどうすればよいですか?
matlabでは簡単です:
>> hex2num('c0399999a0000000')
ans =
-25.6000
しかし、Javaでも同じことができますか?
parseInt()を試しましたが、この数値は整数ではありません。
私はあなたが望むと思います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
は、これをあなたが本当に望んでいるよりも厄介にしますが、ちょっと...)
最初にlongを作成し、次にlongBitsToDoubleを呼び出します