Вы знаете о% # x, в строке формата языка C
-
30-09-2019 - |
Вопрос
KdPrint((
"Unknown IoControlCode %#x\n",
io_stack->Parameters.DeviceIoControl.IoControlCode
));
Это странно. Что означает острый?
Решение
Документация PrintF говорит:
Характер% следует ноль или более из следующих флагов:
# Значение должно быть преобразовано в «альтернативную форму». Для преобразований o первый символ выходной строки выполнен ноль (префиксирует 0, если он уже не был нулевым). Для преобразований X и X ненулевой результат имеет строку «0x» (или «0x» для преобразований X) для него. Для преобразований A, A, E, E, F, F, G и E, E, F, F, G и G всегда будет содержать десятичную точку, даже если никаких цифр не подходит к ней (нормально, десятичная точка появляется в результатах этих преобразований только в том случае цифра следует). Для преобразований G и G задние нули не удаляются из результата, поскольку они в противном случае были бы. Для других преобразований результат не определен.
MSDN Docs на флагах здесь.
Таким образом, для %#x
Значение просто префиксируется с 0x
. Отказ Где %x
будет давать 34ab
, %#x
будет давать 0x34ab
.
Другие советы
#
недействительные альтернативный формат. Отказ За x
это значит, что 0x
добавлен к выходу.
Printf. При использовании с спецификатором x
, #
вызывает префикс вывода с 0x
при условии, что напечатанная ценность Кроме как 0
.