首页 > 后端开发 > C++ > 正文

如何使用 Ostream 在 C 中将无符号字符打印为十六进制?

DDD
发布: 2024-11-10 15:38:02
原创
939 人浏览过

How to Print Unsigned Char as Hex in C   Using Ostream?

使用 Ostream 在 C 中将无符号字符打印为十六进制

使用 ostream 以十六进制打印无符号 8 位变量(unsigned char 或 uint8_t)在 C 中,请考虑以下解决方案:

使用十六进制操纵器进行转换

在使用十六进制操纵器之前,您可以使用强制转换将 unsigned char 转换为 int:

cout << "a is " << hex << (int)a << "; b is " << hex << (int)b << endl;
登录后复制

使用自定义操纵器

MartinStettner 提供了一个名为 hexchar 的优雅自定义操纵器,它可以简化十六进制打印:

#include <iostream>
#include <iomanip>

namespace std
{
  template<>
  ostream& operator<<(ostream& os, unsigned char c)
  {
    return os << setbase(16) << setfill('0') << setw(2) << (unsigned int)c;
  }
}

using namespace std;

int main()
{
  unsigned char a = 0;
  unsigned char b = 0xff;
  cout << "a is " << hexchar << a << "; b is " << hexchar << b << endl;
  return 0;
}
登录后复制

这将产生所需的输出:

a is 00; b is ff
登录后复制

使用宏(不太首选)

作为替代方案,您可以定义一个宏来自动化该过程,尽管这在以下情况下不太惯用C:

#define HEX(x) \
  setw(2) << setfill('0') << hex << (unsigned int)(x)

int main()
{
  unsigned char a = 0;
  unsigned char b = 0xff;
  cout << "a is " << HEX(a) << "; b is " << HEX(b) << endl;
  return 0;
}
登录后复制

以上是如何使用 Ostream 在 C 中将无符号字符打印为十六进制?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板