2013-08-13 4 views
7

ясно, что java не имеет типа «unsigned long», в то время как мы можем использовать long для хранения неподписанных данных. Тогда как я могу преобразовать его в String или просто распечатать его «без знака»?Как преобразовать «unsigned long» в строку в java

+0

что вы имеете в виду «напечатать его в беззнаковое порядке»? – erencan

ответ

12

К сожалению, вам необходимо использовать 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); 
} 
4

Как уже упоминалось в different question на SO, есть способ, который, начиная с Java 8:

System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807 
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808 
Смежные вопросы