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

时间:2012-08-21 20:55:20

标签: c linux formatting

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

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

printk("%x", result);

结果是unsigned char *类型。我是否正确格式化或者我遗失了什么?

2 个答案:

答案 0 :(得分:90)

使用"%02x"

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

零意味着是否需要填充,使用零而不是空格。

答案 1 :(得分:3)

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

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