我需要从bitset中取出字节,这可能(不)包含多个CHAR_BIT位.我现在需要将多少位中的位放入数组中.例如,
位集声明为 std::bitset < 40> id;
有一个单独的变量可以使用nBits多少位id.现在我想以CHAR_BIT的倍数提取这些位.我还需要处理案件nBits % CHAR_BIT != 0.我可以将它放入uint8数组中
Emi*_*ier 17
您可以使用boost :: dynamic_bitset,它可以使用boost :: to_block_range转换为一系列"块" .
#include <cstdlib>
#include <cstdint>
#include <iterator>
#include <vector>
#include <boost/dynamic_bitset.hpp>
int main()
{
typedef uint8_t Block; // Make the block size one byte
typedef boost::dynamic_bitset<Block> Bitset;
Bitset bitset(40); // 40 bits
// Assign random bits
for (int i=0; i<40; ++i)
{
bitset[i] = std::rand() % 2;
}
// Copy bytes to buffer
std::vector<Block> bytes;
boost::to_block_range(bitset, std::back_inserter(bytes));
}
Run Code Online (Sandbox Code Playgroud)