将位集数组转换为整数数组

converting a bitset array to array of ints

我如何将位集数组更改为一维整数数组,每个元素在 C++ 中仅包含一位数字。例如,我有 bitset<8> bitArray[n],我想插入 int binArray[8*n],其中 binArray 包含 [0]、[1]、[1]、[0]、[ 1],[0] 等等。

您可以使用 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

简单构造数组:

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];