Подтвердить что ты не робот

Печать ведущих нулей для шестнадцатеричных в C

Я пытаюсь распечатать результаты хеша MD5 на консоли и работает по большей части. Чтобы обеспечить правильность, я использовал онлайн-калькулятор MD5 для сравнения результатов. Большинство символов одно и то же, но некоторые из них отсутствуют в моем, и они все являются ведущими нулями.

Позвольте мне объяснить. В результате получается 16 байтов без знака char *. Я печатаю каждый из этих байтов один за другим. Каждый байт выводит на экран два символа. Однако, если первый символ из двух равен нулю, он не печатает нуль.

printk("%x", result);

Результат имеет тип unsigned char *. Правильно ли я форматирую его или я что-то упускаю?

4b9b3361

Ответ 1

Используйте "%02x".

Два означает, что вы всегда хотите, чтобы на выходе было два символа.

Нуль означает, что если требуется заполнить, использовать нули вместо пробелов.

Ответ 2

result - это указатель, используйте цикл для печати всех цифр:

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