c – 将字节数组转换为Bitset

前端之家收集整理的这篇文章主要介绍了c – 将字节数组转换为Bitset前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个由随机生成生成的字节数组.我想把它放到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;
}

猜你在找的C&C++相关文章