Boost dynamic_bitset - поместить целое число в диапазон битов
У меня есть 7-битный /56-битный набор битов, который при построении устанавливает первый бит в один:
boost::dynamic_bitset<> b(56, 1);
После создания я хотел бы поместить целое значение (скажем, 2019) в биты с 4 по 15. Мне интересно, есть ли простой способ в бусте сделать это без побитовых операций? По сути, я хочу установить диапазон битов в целочисленное значение, которое, как я знаю, достаточно мало, чтобы соответствовать этим битам. Спасибо за любой совет.
1 ответ
Решение
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);