8

我写了以下代码:

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

 using namespace std;

 int main()
 {
     uint8_t c;

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

     return 0;
 }

但是当我输入c-hex for 12 - 输出也是c. 我期待 12。后来我了解到:

uint8_t通常是unsigned char. 所以它实际上读c作 ASCII 0x63。

是否有一个 1 字节整数在执行 I/O 时表现为整数而不是字符?

4

2 回答 2

4

从来没听说过。

您可以使用更广泛的整数类型执行 I/O,并酌情使用范围检查和强制转换。

于 2012-12-10T16:13:03.883 回答
1

恐怕我也不知道有什么办法,但是将十六进制数读入整数类型可以如下完成:

#include <iostream>
using namespace std;

int main () {
    short c;
    cin >> std::hex >> c;
    cout << c << endl;
    return 0;
}
于 2012-12-10T18:18:41.140 回答