无法在C ++中输出十六进制

时间:2013-11-21 02:18:05

标签: c++ hex bit

我正在尝试输出分配给变量x的十六进制值,而我似乎无法在C ++中使用它。我可以用标准C来做,但是在C ++中得到了不希望的结果。

#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, const char * argv[])
{
    unsigned char x = 0xFF;
    printf("%X\n", x);
    cout << dec << x << endl;
    cout << hex << x << endl;

    return 0;
}

打印

FF
\377
\377

1 个答案:

答案 0 :(得分:4)

因为它是unsigned char,所以流认为您想要输出一个字符,而不是它的值。尝试转换为int

cout << hex << (int)x << endl;

您可能还想使用setw(2)setfill('0')流修饰符将单位十六进制数字填充为2位数(类似于使用%02X printf)。< / p>