Boost dynamic_bitset - поместить целое число в диапазон битов - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть 7-байтовый / 56-битный набор битов, который при построении устанавливает первый бит в один:

boost::dynamic_bitset<> b(56, 1);

После создания я бы хотел поместить целое значение (скажем, 2019) в биты с 4 по 15. Мне интересно, есть ли простой способ в бусте сделать это без побитовых операций? По сути, я хочу установить диапазон битов в целочисленное значение, которое, как я знаю, достаточно мало, чтобы соответствовать этим битам. Спасибо за любой совет.

1 Ответ

4 голосов
/ 01 апреля 2012

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);
...