在C中打印十六进制的前导零

Gre*_*tle 42 c linux formatting

我试图将MD5哈希的结果打印到控制台,它在大多数情况下都有效.为了确保正确性,我使用在线MD5计算器来比较结果.大多数角色是相同的,但是我的一些角色都缺失了,它们都是领先的零.

让我解释.结果是一个16字节的无符号char*.我逐个打印这些字节.每个字节在屏幕上打印两个字符.但是,如果两个中的第一个字符为零,则不会打印零.

printk("%x", result);
Run Code Online (Sandbox Code Playgroud)

结果是unsigned char*类型.我正确地格式化它还是我错过了什么?

asc*_*ler 96

使用"%02x".

这两个意味着您总是希望输出为两个字符宽.

零表示是否需要填充,使用零而不是空格.


oua*_*uah 6

result是一个指针,使用循环打印所有数字:

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