长整型转换为十六进制字符串

22

我在将一个字符串中的十六进制数转换为long类型再转回字符串时遇到了问题。这是我正在使用的代码:

private void parseExperiment(){
    String str1 = "AA0F245C";
    long nr = Long.parseLong(str1, 16);
    String str2 = Double.toHexString(nr);
}

我希望 str2 与 str1 相同,但是当我打印 str1、nr 和 str2 时,得到了以下结果:

str1: AA0F245C
nr: 2853119068
str2: 0x1.541e48b8p31

有人知道如何修复这个问题吗?


你为什么要使用Double.toHexString()解析一个long - anon
2个回答

45

如果您想要将 long 转换回来,请使用 Long.toHexString

使用 Double.toHexStringlong 转换为十六进制字符串,可以得到一个正确的 double 表示,这与 long 的表示不同。


2
天啊!我完全错过了那个!我怎么会搞砸了呢?! - Chikage
2
我必须知道,toHexString 只是将值转换为无符号值。 - deFreitas

11

如果你使用Long.toHexString(nr);,你会得到正确的答案。


1
天啊!我完全错过了那个!我怎么会搞砸了呢?! - Chikage

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接