Я хочу работать с 8-разрядными переменными без знака в C ++. Либо unsigned char
, либо uint8_t
решают проблему с арифметикой (что ожидается, поскольку AFAIK uint8_t
является просто псевдонимом для unsigned char
, или отладчик представляет его.
Проблема в том, что если я распечатываю переменные, используя ostream в C ++, он обрабатывает их как 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 'to unsigned char
, поэтому он делает то же самое. Как правильно распечатать мои переменные?
Редактировать: Я делаю это во многих местах моего кода. Есть ли способ сделать это без приведения к int
каждый раз, когда я хочу напечатать?