Ответ 1
Используйте "%02x"
.
Два означает, что вы всегда хотите, чтобы на выходе было два символа.
Нуль означает, что если требуется заполнить, использовать нули вместо пробелов.
Я пытаюсь распечатать результаты хеша MD5 на консоли и работает по большей части. Чтобы обеспечить правильность, я использовал онлайн-калькулятор MD5 для сравнения результатов. Большинство символов одно и то же, но некоторые из них отсутствуют в моем, и они все являются ведущими нулями.
Позвольте мне объяснить. В результате получается 16 байтов без знака char *. Я печатаю каждый из этих байтов один за другим. Каждый байт выводит на экран два символа. Однако, если первый символ из двух равен нулю, он не печатает нуль.
printk("%x", result);
Результат имеет тип unsigned char *. Правильно ли я форматирую его или я что-то упускаю?
Используйте "%02x"
.
Два означает, что вы всегда хотите, чтобы на выходе было два символа.
Нуль означает, что если требуется заполнить, использовать нули вместо пробелов.
result
- это указатель, используйте цикл для печати всех цифр:
int i;
for (i = 0; i < 16; i++) {
printf("%02x", result[i]);
}