Я хочу работать с 8-битными переменными без знака в С++. Либо unsigned char, либо uint8_t делают трюк насколько это касается арифметики (что ожидается, поскольку AFAIK uint8_t является просто псевдонимом для unsigned char, или, таким образом, отладчик представляет его.
Проблема заключается в том, что если я распечатываю переменные, использующие ostream в С++, он рассматривает ее как char. Если у меня есть:
unsigned char a = 0;
unsigned char b = 0xff;
cout << "a is " << hex << a <<"; b is " << hex << b << endl;
тогда выход:
a is ^@; b is 377
вместо
a is 0; b is ff
Я попытался использовать uint8_t, но, как я уже упоминал ранее, это typedef'ed до unsigned char, поэтому он делает то же самое. Как правильно напечатать мои переменные?
  Изменить: Я делаю это во многих местах по всему моему коду. Есть ли способ, которым я могу это сделать, не отбрасывая int каждый раз, когда я хочу печатать?