увеличить dynamic_bitset копировать биты из uint16

Мне нужно создать 24-битный набор.
Первый (0) бит должен быть установлен bool.
И другие (1 — 23) мне нужно скопировать первые биты из значения uint32

Возможно ли это сделать с помощью dynamic_bitset?

Мой код я пробовал, но неправильно:

typedef boost::dynamic_bitset<unsigned char> DataType;
DataType bs(24, intValue);
bs.set(0, booleanValue);

2

Решение

Просто левый сдвиг:

    DataType bs(24, intValue);
bs <<= 1;
bs.set(0, boolValue);

Жить на Колиру

#include <boost/dynamic_bitset.hpp>
#include <iostream>
typedef boost::dynamic_bitset<unsigned char> DataType;

int main() {
using namespace std; // for readability on SO
cout << hex << showbase;

uint32_t intValue = 0x666;
cout << "input: " << intValue;

DataType bs(24, intValue);

cout << "\n#1: " << bs << " " << bs.to_ulong();

bs <<= 1;
cout << "\n#2: " << bs << " " << bs.to_ulong();

bs.set(0, true);

cout << "\n#3: " << bs << " " << bs.to_ulong();
}

Печать:

input: 0x666
#1: 000000000000011001100110 0x666
#2: 000000000000110011001100 0xccc
#3: 000000000000110011001101 0xccd
1

Другие решения

Итак, мне удалось сделать это таким образом, без наддува:

uint32_t buffer(0xAAAAAAAA);
buffer = buffer << 1;
buffer |= true << 0;

unsigned char newRecord[3];

newRecord[0] = buffer;
newRecord[1] = buffer << 8;
newRecord[2] = buffer << 16;
0