2013-08-13 20 views
7

è chiaro che java non ha il tipo 'unsigned long', mentre possiamo usare long per memorizzare un unsigned data. Quindi, come posso convertirlo in una stringa o semplicemente stamparlo in modo 'non firmato'?Come convertire 'unsigned long' in string in java

+0

che cosa vuoi dire "stamparlo in modo non firmato"? – erencan

risposta

12

È necessario utilizzare BigInteger sfortunatamente o scrivere la propria routine.

Ecco un Unsigned classe che aiuta con queste soluzioni alternative

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

Come menzionato in un different question su SO, c'è un metodo per che a partire da Java 8:

System.out.println(Long.toUnsignedString(Long.MAX_VALUE)); // 9223372036854775807 
System.out.println(Long.toUnsignedString(Long.MIN_VALUE)); // 9223372036854775808 
Problemi correlati