我正在尝试输出分配给变量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
答案 0 :(得分:4)
因为它是unsigned char
,所以流认为您想要输出一个字符,而不是它的值。尝试转换为int
cout << hex << (int)x << endl;
您可能还想使用setw(2)
和setfill('0')
流修饰符将单位十六进制数字填充为2位数(类似于使用%02X
printf
)。< / p>