将位集数组转换为整数数组 我如何将一组位数组转换成一个int数组,每个元素只有C++中的1位。例如,我有位集bitArray[n],我想将位转换为int binArray[8*n],其中binArray包含类似[0]、[1]、[1]、[0]、[1]、[0]等内容。

将位集数组转换为整数数组 我如何将一组位数组转换成一个int数组,每个元素只有C++中的1位。例如,我有位集bitArray[n],我想将位转换为int binArray[8*n],其中binArray包含类似[0]、[1]、[1]、[0]、[1]、[0]等内容。,c++,arrays,bitset,C++,Arrays,Bitset,您可以使用访问指定位。请记住,[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 * SIZ

您可以使用访问指定位。请记住,
[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];
        }
    }
}

只需构造一个数组:

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];
std::数组二进制;
大小输出=0;
用于(常量自动和位:位数组)
对于(尺寸ii=0;ii
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];