Как напечатать unsigned char[] как HEX в C++?

Я хотел бы напечатать следующие хэшированные данные. Как мне это сделать?

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

1 ответов


спецификатор шестнадцатеричного формата ожидает одно целое значение, но вместо этого вы предоставляете массив char. Что вам нужно сделать, это распечатать char значения по отдельности в виде hex значений.

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;