Я хочу работать с 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
каждый раз, когда я хочу печатать?