无法以十六进制显示

时间:2011-04-18 16:43:54

标签: c++

unsigned int i = 0x02081;
cout << std::hex << i;

使用VS2010编译时显示2081,但我认为它应显示0x02081。我是对的,如果是的话,如何解决这个问题呢?

4 个答案:

答案 0 :(得分:14)

默认情况下,不打印基础:

cout << std::hex << std::showbase << i;

答案 1 :(得分:7)

当然,最简单的解决方案是:

cout << "0x" << std::hex << i; 

前导零的数量可能因数量不同而无关紧要。您可以选择任何您喜欢的金额。

答案 2 :(得分:6)

  

我认为它应该显示0x02081。上午   我没错。

不,你不是。它将以十六进制显示值,即20810x本身不是数字的一部分,它只是一个符号方便。前导零也不是数字的一部分。

如果你想要你所说的预期输出,你可以这样做:

cout << std::hex << std::showbase << std::setw(5) << std::setfill('0') << i;

答案 3 :(得分:0)

它应该将i的值显示为十六进制数字 - 并且这样做。前缀0x只是一些编程语言用来表示文字应该被视为十六进制的东西。

cout << "0x" << std::hex << i;

正如Let_Me_Be所指出的那样:"0x" << std::hex如果要为十六进制/八进制/十进制自动打印0x / 0 /无,则可以用std::hex << std::showbase替换。