Как печатать 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??

Ответ 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;