Boost dynamic_bitset - 将整数值放入一系列位中

011*_*110 3 c++ boost bit bitset boost-dynamic-bitset

我有一个 7 字节/56 位位集,在构造时将第一位设置为 1:

boost::dynamic_bitset<> b(56, 1);
Run Code Online (Sandbox Code Playgroud)

构造完成后,我想将一个整数值(比如 2019)放入第 4 位到第 15 位中。我很好奇 boost 中是否有一种简单的方法可以在不进行按位运算的情况下实现此目的?基本上,我想将一系列位设置为一个整数值,我知道该整数值足够小以适合这些位。感谢您的任何建议。

ipc*_*ipc 5

提供boost::dynamic_bitset<>的功能要少得多。我认为唯一的可能性是使用普通循环:

template <typename Bitset>
void set_in_range(Bitset& b, unsigned value, int from, int to)
{
  for (int i = from; i < to; ++i, value >>= 1)
    b[i] = (value & 1);
}

boost::dynamic_bitset<> b(56, 1);
set_in_range(b, 2019, 4, 15);
Run Code Online (Sandbox Code Playgroud)