56

我正在尝试将 MD5 哈希的结果打印到控制台,并且它大部分都在工作。为了确保正确性,我使用了在线 MD5 计算器来比较结果。大多数字符是相同的,但我的中缺少一些字符,它们都是前导零。

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

printk("%x", result);

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

4

2 回答 2

135

使用"%02x".

这两个意味着您总是希望输出为(至少)两个字符宽。

零表示如果需要填充,则使用零而不是空格。

于 2012-08-21T20:58:29.723 回答
4

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

int i;
for (i = 0; i < 16; i++) {
   printf("%02x", result[i]);
}
于 2012-08-21T20:58:51.720 回答