Wissen Sie etwa% # x, in C-Sprache Format-String
-
30-09-2019 - |
Frage
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
Es ist komisch. Was bedeutet scharf bedeuten?
Lösung
Die printf Dokumentation sagt:
Das Zeichen% wird durch Null oder mehrere der folgenden Flags gefolgt:
# Der Wert sollte auf eine ‚‚alternative Form‘umgewandelt werden‘. Für o Umwandlungen, das erste Zeichen der Ausgabezeichenfolge zu Null gemacht (durch eine 0 prefixing, wenn es nicht Null war bereits). Für Umwandlungen x und X ein Nicht-Null-Ergebnis hat die Zeichenfolge ‚0x‘ (oder ‚0X‘ für X Umwandlungen) vorangestellt es. Für a, A, E, E, F, F, G und G Konvertierungen, wird das Ergebnis immer enthalten einen Dezimalpunkt, auch wenn keine Ziffern folgen (in der Regel eine Dezimalzahl Punkt erscheint in den Ergebnissen dieser Conversions nur dann, wenn eine Ziffer folgt). Für g und G Konvertierungen, Hinter Nullen werden nicht aus dem Ergebnis entfernt, da sie sonst der Fall wäre. Für andere Umsätze wird das Ergebnis nicht definiert.
MSDN-Dokumentation auf die Fahnen sind hier .
so für %#x
wird der Wert einfach mit 0x
vorangestellt. Wo %x
34ab
ergeben würde, %#x
ergäbe 0x34ab
.
Andere Tipps
#
indcates ein alternatives Format . Für x
Dies bedeutet, dass 0x
mit dem Ausgang vorangestellt wird.
printf , wenn sie mit Spezifizierer x
verwendet, #
bewirkt, dass der Ausgang vorangestellt wird mit 0x
versehen ist, der Wert gedruckt ist außer 0
.