web-dev-qa-db-ja.com

Cの16進数の先行ゼロを印刷する

MD5ハッシュの結果をコンソールに出力しようとしていますが、ほとんどの部分で機能しています。正確性を確保するために、オンラインMD5計算機を使用して結果を比較しました。ほとんどのキャラクターは同じですが、私の一部では欠落しているものがあり、それらはすべて先行ゼロです。

説明させてください。結果は、16バイトの符号なしchar *です。これらの各バイトを1つずつ印刷します。各バイトは2文字を画面に印刷します。ただし、2つのうち最初の文字がゼロの場合、ゼロは出力されません。

printk("%x", result);

結果はunsigned char *型です。適切にフォーマットしていますか、何か不足していますか?

42
Gregory-Turtle

つかいます "%02x"

この2つは、出力を常に2文字幅にすることを意味します。

ゼロは、スペースの代わりにゼロを使用するためにパディングが必要な場合を意味します。

94
aschepler

resultはポインターです。ループを使用してすべての数字を出力します。

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