2013-08-13 12 views
7

javaはunsigned long型を持たないことは明らかですが、unsignedデータを格納するためにlongを使用できます。次に、それを文字列に変換するか、単に「符号なし」の方法で印刷することはできますか?'unsigned long'をJavaの文字列に変換するには

+0

あなたは「符号なしの方法でそれを印刷」何を意味するのですか? – erencan

答えて

12

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

は、これらの回避策

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

サードパーティのライブラリを使用することができますに役立ちますUnsignedクラスですか?グアバのUnsignedLongs.toString(long)はこれを行います。

4

SO上different questionで述べたように、Javaの8で始まるそのための方法があります:

System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807 
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808 
関連する問題