web-dev-qa-db-ja.com

HEX文字列に長い

文字列の16進数を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

誰もがこれを修正する方法を知っていますか?

7
Chikage

longを再度変換する場合は、 Long.toHexString を使用します。

Double.toHexString を使用してlongを16進文字列に変換すると、doubleの適切な表現が得られます。これはlong

32
user1907906

Long.toHexString(nr);を使用すると、正しい答えが得られます

7
Maciej