我写了以下代码:
#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
通常是unsigned char
的typedef。所以它实际上是将c
读作ASCII 0x63。
是否存在1字节整数,在执行I / O时表现为整数而不是char?
答案 0 :(得分:4)
不是我知道的。
您可以使用更宽的整数类型执行I / O,并根据需要使用范围检查和转换。
答案 1 :(得分:1)
恐怕我也不知道,但是将十六进制数读入整数类型可以完成如下:
#include <iostream>
using namespace std;
int main () {
short c;
cin >> std::hex >> c;
cout << c << endl;
return 0;
}