我需要找到一种方法来获取位集变量中的位序列并将它们分配给 c++ 中的 uint32 变量。
例如,如果我有一个“0xffff ffff”的 bitset<32> 变量,我想要一个 ffff ffff 的 uint32 变量。
我曾经将位序列作为字符串表示,但我决定使用位集来保存位。从字符串中转移它们会更容易吗?
我需要找到一种方法来获取位集变量中的位序列并将它们分配给 c++ 中的 uint32 变量。
例如,如果我有一个“0xffff ffff”的 bitset<32> 变量,我想要一个 ffff ffff 的 uint32 变量。
我曾经将位序列作为字符串表示,但我决定使用位集来保存位。从字符串中转移它们会更容易吗?
bitset
有一种to_ulong
方法可以做到这一点:
unsigned long to_ulong() const;
转换为无符号长整数
返回一个unsigned long
整数值,该整数值与位集的位设置相同。
例子:
#include <bitset>
#include <iostream>
int main(void)
{
std::bitset<32> b(0xffffffff);
uint32_t i = b.to_ulong();
std::cout << b << std::endl;
std::cout << std::hex << i << std::endl;
return 0;
}
构建和运行:
$ make example && ./example
c++ example.cpp -o example
11111111111111111111111111111111
ffffffff