C++ boost动态字节集从uint16复制位
我需要创建24位集。 第一(0)位必须由布尔设置。 和其他(1-23)我需要从uint32值复制第一位 是否可以使用动态_位集执行此操作 我的代码我试过了,但错了:C++ boost动态字节集从uint16复制位,c++,boost,boost-dynamic-bitset,C++,Boost,Boost Dynamic Bitset,我需要创建24位集。 第一(0)位必须由布尔设置。 和其他(1-23)我需要从uint32值复制第一位 是否可以使用动态_位集执行此操作 我的代码我试过了,但错了: typedef boost::dynamic_bitset<unsigned char> DataType; DataType bs(24, intValue); bs.set(0, booleanValue); typedef boost::dynamic_位集数据类型; 数据类型bs(24,intValue); b
typedef boost::dynamic_bitset<unsigned char> DataType;
DataType bs(24, intValue);
bs.set(0, booleanValue);
typedef boost::dynamic_位集数据类型;
数据类型bs(24,intValue);
bs.set(0,布尔值);
刚刚左移:
DataType bs(24, intValue);
bs <<= 1;
bs.set(0, boolValue);
因此,我成功地通过这种方式实现了这一点,而没有boost位集:
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;
uint32\u t缓冲区(0xaaaa);
缓冲区=缓冲区感谢您的更正。但此代码将用布尔值替换位集中int值的第0位。在重新阅读编辑的问题后更新<代码>真
input: 0x666
#1: 000000000000011001100110 0x666
#2: 000000000000110011001100 0xccc
#3: 000000000000110011001101 0xccd
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;