2013-08-13 10 views
7

jest jasne, że java nie ma typu "unsigned long", podczas gdy możemy używać długiego do przechowywania niepodpisanych danych. Jak mogę go przekonwertować na ciąg lub po prostu wydrukować go w sposób "niepodpisany"?Jak przekonwertować "unsigned long" na ciąg w java

+0

co masz na myśli „wydrukować go w unsigned sposób”? – erencan

Odpowiedz

12

Musisz użyć BigInteger niestety lub napisać własną procedurę.

Oto klasa Unsigned który pomaga z tych obejścia

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

Jak wspomniano w different question na SO, istnieje metoda, która wychodząc z Java 8:

System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807 
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808 
Powiązane problemy