簡體   English   中英

將位集數組轉換為整數數組

[英]converting a bitset array to array of ints

我如何將位集數組更改為一維整數數組,其中每個元素在 C++ 中僅包含 1 位數字。 例如,我有 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];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM