Как выводить символ как целое через cout?

#include  using namespace std; int main() { char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << c1 << endl; cout << c2 << endl; cout << c3 << endl; } 

Я ожидал, что результаты будут следующими:

 ab cd ef 

Тем не менее, я ничего не получил.

Я думаю, это потому, что cout всегда обрабатывает «char», «signed char» и «unsigned char» как символы, а не 8-битные целые числа. Тем не менее, «char», «signed char» и «unsigned char» являются целыми типами.

Поэтому мой вопрос: как выводить символ как целое число через cout?

PS: static_cast (…) является уродливым и требует больше работы для обрезки дополнительных бит.

 char a = 0xab; cout << +a; // promotes a to a type printable as a number, regardless of type. 

Это работает до тех пор, пока тип предоставляет унарный + оператор с обычной семантикой. Если вы определяете class, представляющий число, чтобы предоставить унарный + оператор с канонической семантикой, создайте operator+() который просто возвращает *this либо по значению, либо по ссылке-на-const.

источник: Parashift.com - Как я могу напечатать символ в виде числа? Как я могу напечатать символ *, чтобы на выходе отображалось числовое значение указателя?

Передайте их целочисленному типу (и битмаску соответственно!), То есть:

 #include  using namespace std; int main() { char c1 = 0xab; signed char c2 = 0xcd; unsigned char c3 = 0xef; cout << hex; cout << (static_cast(c1) & 0xFF) << endl; cout << (static_cast(c2) & 0xFF) << endl; cout << (static_cast(c3) & 0xFF) << endl; } 

Может быть, это:

 char c = 0xab; std::cout << (int)c; 

Надеюсь, поможет.

Другой способ сделать это: std :: hex отдельно от casting (int) :

 std::cout << std::hex << (int)myVar << std::endl; 

Я надеюсь, что это помогает.

  • Преобразование символьной цифры в соответствующее целое число в C
  • Как преобразовать gi-норное целое число (в строчном формате) в шестнадцатеричный формат? (С #)
  • Преобразование Float в Int в Swift
  • Как преобразовать целое число в строку в C?
  • Давайте будем гением компьютера.