将bitset数组转换为int数组

时间:2018-02-12 01:09:30

标签: c++ arrays bitset

我如何将一组位集更改为一维的1d数组,每个元素在C ++中只保存1位数。例如,我有bitset< 8> bitArray [n],我想进入int binArray [8 * n],其中binArray包含[0],[1],[1],[0],[1],[0]之类的内容等等

2 个答案:

答案 0 :(得分:1)

您可以使用std::bitset::operator[]来访问指定位。但请记住,[0]表示最不重要的位,但我们希望将它们存储在最重要的位置 - >最不重要的订单,因此我们必须使用7 - j而不是j

#include <iostream>
#include <bitset>

int main()
{
    constexpr int SIZE = 5;
    std::bitset<8> bitArray[SIZE] = {3, 8, 125, 40, 13};
    int binArray[8 * SIZE];

    for(int i = 0, index = 0; i < SIZE; ++i){
        for(int j = 0; j < 8; ++j){
            binArray[index++] = bitArray[i][7 - j];
        }
    }
}

binArray的内容看起来是这样的(我添加了新行,以提高可读性):

0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0
0 1 1 1 1 1 0 1
0 0 0 0 1 1 0 1

答案 1 :(得分:0)

只需构建一个数组:

std::array<int, 8*n> binArray;
size_t out = 0;
for (const auto& bits : bitArray)
    for (size_t ii = 0; ii < n; ++ii)
        binArray[out++] = bitArray[ii];