1-байтовый целочисленный тип данных

Я написал следующий код:

 #include <iostream>
#include <iomanip>
#include <stdint.h>

using namespace std;

int main()
{
uint8_t c;

cin  >> hex >> c;
cout << dec << c;

return 0;
}

Но когда я ввожу c—Хекс за 12 — вывод также c, Я ожидал 12. Позже я узнал, что:

uint8_t обычно это typedef для unsigned char, Так что на самом деле это чтение c как ASCII 0x63.

Есть ли 1-байтовое целое число, которое ведет себя как целое число при выполнении ввода-вывода, а не как символ?

6

Решение

Не то, что я знаю из.

Вы могли бы сделать ввод / вывод, используя более широкий целочисленный тип, и использовать проверку диапазона и приведение в зависимости от ситуации.

4

Другие решения

Боюсь, я тоже не знаю способа, но чтение шестнадцатеричного числа в целочисленный тип может быть выполнено следующим образом:

#include <iostream>
using namespace std;

int main () {
short c;
cin >> std::hex >> c;
cout << c << endl;
return 0;
}
1

По вопросам рекламы [email protected]