C++ конвертировать hex (uint8) в строку
Я играл с строковыми потоками в C++, когда неожиданно обнаружил, что следующий фрагмент кода не работает должным образом:
int main()
{
uint8_t foo = 82;
std::cout << "0x" << std::uppercase << std::setfill('0') << std::setw(4) << std::hex << foo << std::endl;
}
Распечатывает: 0x000R
(ожидается, будет 0x0052
Обратите внимание, что когда я меняю тип foo на uint16_t или uint32_t, вывод выводится правильно.
Кто может объяснить мне, почему код ведет себя так? Это ошибка?