Drucken führender Nullen für Hexadezimalzahlen in C

Lesezeit: 1 Minute

Ich versuche, die Ergebnisse eines MD5-Hash auf die Konsole zu drucken, und es funktioniert größtenteils. Um die Richtigkeit sicherzustellen, habe ich einen Online-MD5-Rechner verwendet, um die Ergebnisse zu vergleichen. Die meisten Zeichen sind gleich, aber ein paar fehlen in meinem und sie sind alle führende Nullen.

Lassen Sie mich erklären. Das Ergebnis ist ein 16-Byte-Zeichen ohne Vorzeichen *. Ich drucke jedes dieser Bytes einzeln. Jedes Byte gibt ZWEI Zeichen auf dem Bildschirm aus. Wenn jedoch das erste der beiden Zeichen eine Null ist, wird die Null nicht gedruckt.

printk("%x", result);

Das Ergebnis ist vom Typ unsigned char*. Habe ich es richtig formatiert oder übersehe ich etwas?

  • Es ist dieser anderen Frage nicht einmal im Entferntesten ähnlich, seit der anderen Frage verbietet printf-Funktionsfamilie und diese erfordert es.

    – dave

    22. August 2012 um 0:49 Uhr

Benutzeravatar von aschepler
Aschepler

Verwenden "%02x".

Die zwei bedeutet, dass die Ausgabe immer (mindestens) zwei Zeichen breit sein soll.

Die Null bedeutet, wenn Auffüllen erforderlich ist, Nullen anstelle von Leerzeichen zu verwenden.

result ein Zeiger ist, verwenden Sie eine Schleife, um alle Ziffern zu drucken:

int i;
for (i = 0; i < 16; i++) {
   printf("%02x", result[i]);
}

  • Die habe ich weggelassen [i] zufällig in meinem Beitrag. Danke aber für den Hinweis!

    – Gregory-Schildkröte

    22. August 2012 um 1:55 Uhr

1413430cookie-checkDrucken führender Nullen für Hexadezimalzahlen in C

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

Privacy policy