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



我试图输出一个分配给变量x的十六进制值,但我似乎无法在C++中使其工作。我可以在标准C中完成,但在C++中得到了不希望的结果。

#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, const char * argv[])
{
    unsigned char x = 0xFF;
    printf("%Xn", x);
    cout << dec << x << endl;
    cout << hex << x << endl;
    return 0;
}

打印

FF
377
377

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

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

您可能还希望使用setw(2)setfill('0')流修饰符将个位数的十六进制数字填充为2位数(类似于将%02Xprintf一起使用)。

最新更新