如何在 C 中将 unsigned char\[\] 打印为 HEX?

新手上路,请多包涵

我想打印以下散列数据。我该怎么做?

 unsigned char hashedChars[32];
SHA256((const unsigned char*)data.c_str(),
       data.length(),
       hashedChars);
printf("hashedChars: %X\n", hashedChars);  // doesn't seem to work??

原文由 louis.luo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
1 个回答

十六进制格式说明符需要一个整数值,但您提供的是 char 的数组。您需要做的是将 char 值单独打印为十六进制值。

 printf("hashedChars: ");
for (int i = 0; i < 32; i++) {
  printf("%x", hashedChars[i]);
}
printf("\n");

由于您使用的是 C++,尽管您应该考虑使用 cout 而不是 printf (这对于 C++ 来说更惯用。

 cout << "hashedChars: ";
for (int i = 0; i < 32; i++) {
  cout << hex << hashedChars[i];
}
cout << endl;

原文由 JaredPar 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题