3

我需要找到一种方法来获取位集变量中的位序列并将它们分配给 c++ 中的 uint32 变量。

例如,如果我有一个“0xffff ffff”的 bitset<32> 变量,我想要一个 ffff ffff 的 uint32 变量。

我曾经将位序列作为字符串表示,但我决定使用位集来保存位。从字符串中转移它们会更容易吗?

4

1 回答 1

9

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
于 2013-09-23T23:08:03.377 回答