c++ - 使用十六进制字符实例化位集

标签 c++ hex bitset

嘿,我想弄清楚如何根据十六进制字符实例化 4 位位集。例如,如果我有一个值为“F”的字符,我想创建一个大小为 4 的位集,初始化为 1111,或者如果它是 A,我想将它初始化为 1010。我可以使用一堆 if 语句,如下所示:

fn(char c)
{
  bitset<4> temp;

  if(c == 'F')
    temp.set();

  //...

  if(c == '9')
  {
    temp.set(1);
    temp.set(3);
  }

  //...

}

这不是很有效,有没有一种方法可以轻松地将字符串转换为十进制整数并使用 int 的最后 4 位构造位集?

感谢您的帮助。

最佳答案

该类型有 a constructor接受 unsigned long。将您的字符转换为相应的整数值,并用它构造一个 bitset

std::bitset<4> temp(hexchar_to_int(c));

您可以根据需要实现假设的 hexchar_to_int。您可以使用 strtoul为了那个原因。例如:

unsigned long hexchar_to_int(char c) {
  char chars[2] = {c, '\0'};
  return strtoul(chars, NULL, 16);
}

关于c++ - 使用十六进制字符实例化位集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816121/

相关文章:

c++ - 如果在声明中使用了 __typeof__ 宏,是否可以访问结构成员?

c++ - 将Qt集成到现有VS项目中以替换WinAPI

c++ - 纹素中心的采样没有给出正确的结果,OpenGL,C++

C 中多个十六进制值的串联

math - 在什么时候数字的十六进制表示比十进制占用更少的字符?

c++ - 计算一个十六进制数的位数

x86 - 使用 SSE 的位集的实现和性能

c++ - 如何在位集中存储更大的二进制数 (C++)

c++ - 我可以在 C++ 中使用 Tk 吗?

java - 找到多个 BitSets java 的共同父级