web-dev-qa-db-ja.com

unsigned char []をC ++で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??
12
louis.luo

16進形式指定子は単一の整数値を想定していますが、代わりにcharの配列を提供しています。 char値を16進値として個別に出力する必要があります。

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;
16
JaredPar