2013-08-13 13 views
5

in printf() mi ricordo per unsigned c'è %u ... ma posso trovare tale %u in specifiche per String.format()% d in String.format() funziona anche per interi senza segno?

così se ho un grande unsigned int poi %d funzionerà correttamente su di esso?

+9

java non ha numeri interi senza segno – Kevin

+0

Java 8 ha numeri interi senza segno. – boring

+0

AFAIK Java 8 ha un'API per la soluzione alternativa per non avere tipi non firmati. –

risposta

9

Se si vuole trattare un int come se fosse firmato il possibile per

int i = ... 
String s = String.format("%d", i & 0xFFFFFFFFL); 

Questo trasforma in modo efficace l'int firmato in un lungo, ma sarà da 0 .. 2^31-1

di fare il contrario si può fare

int i = (int) Long.parseLong(s); 
String s2 = String.format("%d", i & 0xFFFFFFFFL); 

E s2 sarà lo stesso di s purché in gamma.

BTW: La cosa più semplice da fare potrebbe essere quella di utilizzare un long in primo luogo. A meno che non si stia creando molto di questi la memoria extra è banale e il codice è più semplice.

Problemi correlati