c++十六进制数字格式
我正在尝试输出字符的十六进制值并以一种很好的方式对其进行格式化。
必需:0x01:值0x1
我能得到的是:00x1:值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
I'm trying to output the hex value of a char and format it in a nice way.
Required: 0x01 : value 0x1
All I can get is: 00x1 : value 0x1
// or 0x1 if i don't use iomanip
Here's the code i have, 'ch' was declared to be a unsigned char. Is there any other way to do it other than checking the value and manually add an '0'??
cout << showbase;
cout << hex << setw(2) << setfill('0') << (int) ch;
Edit:
I found one solution online:
cout << internal << setw(4) << setfill('0') << hex << (int) ch
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于
setw
填充到整个打印数字的左侧(应用showbase
之后),因此showbase
在您的情况下不可用。相反,请手动打印出底座,如上所示。Since
setw
pads out to the left of the overall printed number (aftershowbase
is applied),showbase
isn't usable in your case. Instead, manually print out the base as shown above.在我的一个项目中,我这样做了:
我向操作员支付了额外费用<<对于流输出,任何字节都以十六进制显示。 byte 是 unsigned char 的 typedef。
In one on my projects I did this:
I surchaged the operator<< for stream output, and anything that was a byte was shown in hexadecimal. byte is a typedef for unsigned char.