C++十六进制数格式。

10

我想要输出一个字符的十六进制值,并以一种美观的方式格式化它。

期望输出结果:0x01 : value 0x1

但我只能得到这样的输出结果:00x1 : value 0x1(如果不使用 iomanip,则为 0x1)。下面是我的代码,其中 'ch' 的声明为无符号字符。除了检查值并手动添加 '0' 之外,还有其他方法可以实现吗?

cout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;

编辑:

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

cout << internal << setw(4) << setfill('0') << hex << (int) ch
2个回答

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

由于setw在应用showbase之后会将填充放在整个打印数字的左侧,所以在您的情况下无法使用showbase。相反,像上面展示的那样手动打印基数。


0
在我的一个项目中,我做了这个:
ostream &operator<<(ostream &stream, byte value)
{
     stream << "0x" << hex << (int)value;
     return stream;
}

我重载了流输出运算符<<,并且任何字节都以十六进制显示。byte是unsigned char的typedef。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接