c ++十六进制数字格式

时间:2009-10-25 00:52:28

标签: c++ hex

我正在尝试输出char的十六进制值并以一种很好的方式对其进行格式化。

必填:0x01 : value 0x1

我所能获得的是:00x1 : value 0x1 //或0x1如果我不使用iomanip

这是我的代码,'ch'被声明为unsigned char。除了检查值并手动添加“0”??

之外,还有其他方法可以做到这一点
cout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;

编辑:

我在网上找到了一个解决方案:

cout << internal << setw(4) << setfill('0') << hex << (int) ch

2 个答案:

答案 0 :(得分:13)

std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;

由于setw填充在整个打印号码的左侧(应用showbase后),showbase在您的情况下无法使用。而是手动打印出基座,如上所示。

答案 1 :(得分:0)

在我的项目中,我做到了这一点:

ostream &operator<<(ostream &stream, byte value)
{
     stream << "0x" << hex << (int)value;
     return stream;
}

我把操作员&lt;&lt;&lt;&lt;对于流输出,任何字节都以十六进制显示。 byte是unsigned char的typedef。