zeros Führende Nullen für Hexadezimal in C drucken




sprintf (2)

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

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

Ich versuche, die Ergebnisse eines MD5-Hash auf der Konsole auszudrucken, und er funktioniert zum größten Teil. Um die Richtigkeit sicherzustellen, habe ich einen Online-MD5-Rechner zum Vergleich der Ergebnisse verwendet. Die meisten Charaktere sind die gleichen, aber einige fehlen mir und sie sind alle führende Nullen.

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

printk("%x", result);

Ergebnis ist vom Typ unsigned char *. Formatiere ich es richtig oder fehlt mir etwas?


Verwenden Sie "%02x" .

Beides bedeutet, dass die Ausgabe immer zwei Zeichen breit sein soll.

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







formatting