使用十六进制字符实例化位集
嘿,我正在尝试弄清楚如何基于十六进制字符实例化 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 位构造位集?
感谢您的任何帮助。
Hey, I'm trying to figure out how to instantiate a 4 bit bitset based on a hex character. For instance, If I have a character with value 'F', I want to create a bitset of size 4 initialized to 1111 or if it is A, i want to initialize it to 1010. I could use a bunch of if statements like so:
fn(char c)
{
bitset<4> temp;
if(c == 'F')
temp.set();
//...
if(c == '9')
{
temp.set(1);
temp.set(3);
}
//...
}
This isn't efficient, is there a way of easily converting the string to a decimal integer and constructing the bitset using the last 4 bits of the int?
Thanks for any help.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
该类型有一个构造函数,它接受一个
unsigned long< /代码>。将您的字符转换为相应的整数值并用它构造一个
bitset
。您可以根据需要实现假设的
hexchar_to_int
。您可以使用strtoul
来实现。例如:That type has a constructor that accepts an
unsigned long
. Convert your character to the corresponding integral value and construct abitset
with that.You can implement the hypothetical
hexchar_to_int
however you want. You might usestrtoul
for that. For example:如前所述,您需要一个
long
作为构造函数。你怎么得到这个?设置查找数组:As noted, you need a
long
for the constructor. How do you get that? Set up a lookup array:std::bitset
有一个采用unsigned long
的构造函数。你可以使用它:std::bitset
has a constructor that takesunsigned long
. You could use it:尝试使用此函数来转换十六进制字符(处理大写和小写)。然后,将结果传递给
bitset
构造函数。您必须先检查输入是否有效!Try this function to convert a hex character (handles both uppercase and lowercase). Then, pass the result to the
bitset
constructor. You must check that the input is valid first!还有一种方法..
One more way..