String.format() und Hex-Zahlen in Java

Lesezeit: 1 Minute

Benutzeravatar von Fitzoh
Fitzoh

Ich versuche herauszufinden warum String.format() verhält sich so wie es ist.

Kontext: Klasse für Systemprogrammierung, Schreiben eines Assemblers.

In der Objektdatei befindet sich ein 5-stelliges Hex-Feld, das ich aus einem Wert erstelle.

Versucht mit: String.format("%05X", decInt);

Dies funktioniert wie vorgesehen für positive Zahlen (11 -> 0000B) Es schlägt jedoch bei negativen Zahlen fehl (-1 -> FFFFFFFF anstatt FFFFF)

Ich nehme an, ich könnte einfach eine Teilzeichenfolge der letzten 5 Zeichen nehmen, aber ich würde trotzdem gerne herausfinden, warum es sich so verhält.

  • Das Problem ist die width festgelegt durch die Formatmethode, in diesem Fall 5, ist die minimale Breite.

    – twain249

    7. März 2012 um 22:44 Uhr

Die im Format verwendete Breite ist immer eine Mindestbreite. In diesem Fall würde ich anstelle von Sub-String-Operationen vorschlagen:

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

Die Formatbreite funktioniert nur, um a zu erstellen Minimum Anzahl der Ziffern und wirkt sich nur auf führende Nullen aus.

Anstelle des Teilstrings könnten Sie eine Bitmaske verwenden:

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

Übrigens, 11 -> 0000Bnicht 0000A wie in deiner Frage behauptet.

  • Ok, das macht jetzt Sinn. Ging auch zurück und modifizierte das A->B, Prost

    – Fitzoh

    7. März 2012 um 23:06 Uhr

1441200cookie-checkString.format() und Hex-Zahlen in Java

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy