java中如何将十六进制数字字符串转换为双精度数字?
在 matlab 中很简单:
>> hex2num('c0399999a0000000')
ans =
-25.6000
但我也可以在java中做同样的事情吗?
我尝试了 parseInt() 但这个数字不是整数。
我想你想要Double.longBitsToDouble http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#longBitsToDouble%28long%29, 像这样:
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 中签名会让这比你真正想要的更尴尬,但是嘿......)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)