【问题标题】:c++ hex number formatc++十六进制数字格式
【发布时间】:2010-12-09 19:55:26
【问题描述】:

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

必填: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

【问题讨论】:

    标签: c++ hex


    【解决方案1】:

    在我的一个项目中,我这样做了:

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

    我为流输出附加了运算符

    【讨论】:

      【解决方案2】:
      std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch;
      

      由于setw 填充到整个打印数字的左侧(在应用showbase 之后),showbase 在您的情况下不可用。相反,请手动打印出如上所示的基础。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-15
        • 2021-11-20
        • 2012-08-15
        • 2022-07-08
        • 2013-01-21
        • 1970-01-01
        • 2015-01-13
        • 1970-01-01
        相关资源
        最近更新 更多