Der von Ihnen erwähnte Formatstring-Angriff auf printf ist nicht spezifisch für die Formatierung "% x". In jedem Fall liest printf mehr Formatierungsparameter als übergebene Variablen und liest Werte aus dem Stapel, die nicht dazu gehören. Sie erhalten das gleiche Problem beispielsweise mit% d. % x ist nützlich, wenn Sie diese Werte als hexadezimal anzeigen möchten.
Wie in den vorherigen Antworten erläutert, erzeugt% 08x eine 8-stellige Hex-Zahl, die durch vorhergehende Nullen aufgefüllt wird.
Verwenden der Formatierung in Ihrem Codebeispiel in printf ohne zusätzliche Parameter:
printf ("%08x %08x %08x %08x");
Ruft 4 Parameter vom Stapel ab und zeigt sie als 8-stellige gepolsterte Hex-Zahlen an.
000007ac
oder0005ceef
.