java - java中将十六进制数字字符串转换为 double 字

标签 java numbers hex

如何在java中将十六进制数字字符串转换为 double 字?

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

(事实上,long 在 Java 中是有符号的,这使得这比你真正想要的更尴尬,但是嘿......)

关于java - java中将十六进制数字字符串转换为 double 字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708362/

相关文章:

php - 我如何删除点后的任何数字

python - 简单的基本 Python 比较

c++ - 从二进制文件读取后出现奇怪的数字

java - 作为原始十六进制打印双倍?

java - GWT 编译为 javascript 需要大量时间

java - 创建全屏桌面环境?

java - 当我将按钮放在 Activity 上时,Android 应用程序崩溃,空 Activity 正在工作

java - 在 iReport 中对列进行排序

swift - TextField 未更新,给我可选的 ""

c++ - 使用十六进制字符实例化位集