10

Java には「unsigned long」型がないことは明らかですが、long を使用して unsigned データを格納できます。次に、それを文字列に変換するか、「署名なし」で印刷するにはどうすればよいですか?

4

4 に答える 4

13

残念ながら BigInteger を使用するか、独自のルーチンを作成する必要があります。

これらの回避策に役立つUnsignedクラスを次に示します。

private static final BigInteger BI_2_64 = BigInteger.ONE.shiftLeft(64);

public static String asString(long l) {
    return l >= 0 ? String.valueOf(l) : toBigInteger(l).toString();
}

public static BigInteger toBigInteger(long l) {
    final BigInteger bi = BigInteger.valueOf(l);
    return l >= 0 ? bi : bi.add(BI_2_64);
}
于 2013-08-13T08:33:51.627 に答える
10

SOに関する別の質問で述べたように、Java 8から始まる方法があります:

System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808
于 2015-08-13T14:05:11.857 に答える