嘿,我想弄清楚如何根据十六进制字符实例化 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/