我试图输出一个分配给变量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位数(类似于将%02X
与printf
一起使用)。