c ++十六进制数字格式

cpl*_*bie 10 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;
Run Code Online (Sandbox Code Playgroud)

编辑:

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

cout << internal << setw(4) << setfill('0') << hex << (int) ch
Run Code Online (Sandbox Code Playgroud)

bdo*_*lan 13

std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;
Run Code Online (Sandbox Code Playgroud)

由于setw垫在整个打印数字的左侧(showbase应用后),showbase因此在您的情况下不可用.而是手动打印出基座,如上所示.