我有一个由随机数生成器生成的字节数组.我想把它放到STL bitset中.
不幸的是,看起来Bitset只支持以下构造函数:
> 1和0的字符串,如“10101011”
>一个无符号长. (我的字节数组会更长)
我现在能想到的唯一解决方案是逐位读取字节数组并生成1和0的字符串.有没有人有更有效的解决方案?
解决方法
像这样的东西? (不确定模板魔术是否在我的预期中起作用.我在C中生锈了.)
std::bitset bytesToBitset<int numBytes>(byte *data) { std::bitset<numBytes * CHAR_BIT> b; for(int i = 0; i < numBytes; ++i) { byte cur = data[i]; int offset = i * CHAR_BIT; for(int bit = 0; bit < CHAR_BIT; ++bit) { b[offset] = cur & 1; ++offset; // Move to next bit in b cur >>= 1; // Move to next bit in array } } return b; }