Java

2012-03-07 19 views
46

'de String.format() ve onaltılık sayılar String.format()'un neden böyle davrandığını anlamaya çalışıyorum.Java

Bağlam: Sistem programlama sınıfı, bir assembler yazıyor.

Nesne dosyasında bir değerden oluşturduğum 5 karakterlik bir hex alanı var.

kullanarak çalıştı: String.format("%05X", decInt); pozitif sayılar (11 ->0000B) yönelik olarak bu işleri

-

herhalde (yerine FFFFF ait>FFFFFFFF -1) o negatif sayılar başarısız Ancak Son 5 karakterin bir alt dizisini alabilirdim, ancak neden böyle davrandığını anlamaya çalışıyorum.

+5

Sorun, biçim yöntemiyle belirlenen "genişlik" dir, bu durumda 5, minimum genişliktir. – twain249

cevap

66

Biçim olarak kullanılan genişlik her zaman minimum genişliktedir. Bu durumda, yerine alt dize işlemlerini kullanarak öneririm:

String.format("%05X", decInt & 0xFFFFF); 
11

Biçim genişlik sadece basamak asgari numarayı oluşturmak için çalışır ve sadece lider sıfır üzerinde etkisi vardır. Sorunuza talep edilen>0000B değil 0000A - Bu arada, 11

String.format("%05X", decInt & 0x0FFFFF) 

: Yerine altdizgenin

, biraz maskesi kullanabilirsiniz.

+1

Tamam, bu şimdi mantıklı. Ayrıca geri döndü ve A-> B, cheers değiştirdi – Fitzoh