2013-08-13 10 views
5

ben imzasız için %u orada hatırlıyorum ... ama %d üzerinde düzgün çalışacağını ardından büyük unsigned int varsa o kadar String.format()% d ile String.format(), imzasız tamsayılar için de çalışıyor mu? <code>printf()</code> yılında

için gözlük böyle bir %u bulabilirim?

+9

java imzasız tam sayılara sahip değil. – Kevin

+0

Java 8'de imzasız tamsayı var. – boring

+0

AFAIK Java 8, imzalanmamış türlerin bulunmaması için genel bir çözüm için bir API'ye sahiptir. –

cevap

9

bunu imzasız sanki yapabilirsiniz bir int için

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

Bu etkin uzun haline imzalanan int döner fakat 0'dan olacak .. 2^31-1

tedavi etmek istiyorsanız

Eğer

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

yapabilirsiniz Ve s kapsama alanında sağlanan s2 aynı olacaktır tersini yapmak için.

BTW: Yapılacak en basit şey, ilk olarak bir long kullanmak olabilir. Bunlardan çok fazla oluşturmuyorsanız, ekstra bellek önemsizdir ve kod daha basittir.

İlgili konular