Я написал следующий код:
#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-байтовое целое число, которое ведет себя как целое число при выполнении ввода-вывода, а не как символ?
Не то, что я знаю из.
Вы могли бы сделать ввод / вывод, используя более широкий целочисленный тип, и использовать проверку диапазона и приведение в зависимости от ситуации.
Боюсь, я тоже не знаю способа, но чтение шестнадцатеричного числа в целочисленный тип может быть выполнено следующим образом:
#include <iostream>
using namespace std;
int main () {
short c;
cin >> std::hex >> c;
cout << c << endl;
return 0;
}