[Qt] QBitArray

이번 글에서는 QBitArray를 사용하는 방법에 대해 알아보겠습니다.
QBitArray는 비트 배열을 제공하는 클래스 입니다. 해당 클래스를 사용하면 제공하는 기능으로 비트배열에 대해 연산하기가 편합니다.

QBitArray 선언

QBitArray는 객체를 선언함과 동시에 배열의 크기를 설정하거나 선언과 동시에 값을 설정할 수도 있습니다.

QBitArray bit_array1(8); // 8bit
QBitArray bit_array1(8, true); // 8bit, true로 값 설정
QBitArray 사이즈 설정

QBitArray의 크기는 resize 함수를 통해서 설정 할 수 있습니다.

QBitArray bit_array1;
bit_array1.resize(8); // 8bit
QBitArray 값 설정

비트에 값을 설정하는 방법은 setBit 함수를 사용하거나 []연산자 함수를 사용하는 방법 두 가지가 있습니다.

bit_array1.setBit(0, true);
bit_array1.setBit(1, false);
bit_array1.setBit(2, true);
bit_array1[5] = true;
bit_array1[6] = false;
QBitArray 연산자

QBitArray 객체끼리 연산자 사용도 가능합니다.

// or
QBitArray bit_or(8, false);
bit_or.resize(8); // 8bit
bit_or |= bit_array1;

// and
QBitArray bit_and(8, true);
bit_and.resize(8); // 8bit
bit_and &= bit_array1;

// not
QBitArray bit_not(8);
bit_not.resize(8); // 8bit
bit_not = ~bit_array1;

// xor
QBitArray bit_xor(8);
bit_xor.resize(8); // 8bit
bit_xor ^= bit_array1;
QBitArray 전체 코드

위 내용에 대해 전체 코드는 아래와 같습니다.

#include <QCoreApplication>
#include <QBitArray>
#include <QDebug>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // QBitArray
    QBitArray bit_array1(8); // 8bit
//    QBitArray bit_array1(8, true); // 8bit, true로 값 설정
    bit_array1.resize(8); // 8bit
    qDebug() << "bit_array1: " << bit_array1;

    bit_array1.setBit(0, true);
    bit_array1.setBit(1, false);
    bit_array1.setBit(2, true);
    bit_array1[5] = true;
    bit_array1[6] = false;
    qDebug() << "bit_array1: " << bit_array1;

    // or
    QBitArray bit_or(8, false);
    bit_or.resize(8); // 8bit
    bit_or |= bit_array1;
    qDebug() << "bit_or: " << bit_or;

    // and
    QBitArray bit_and(8, true);
    bit_and.resize(8); // 8bit
    bit_and &= bit_array1;
    qDebug() << "bit_and: " << bit_and;

    // not
    QBitArray bit_not(8);
    bit_not.resize(8); // 8bit
    bit_not = ~bit_array1;
    qDebug() << "bit_not: " << bit_not;

    // xor
    QBitArray bit_xor(8);
    bit_xor.resize(8); // 8bit
    bit_xor ^= bit_array1;
    qDebug() << "bit_xor: " << bit_xor;

    return a.exec();
}

실행 결과는 아래와 같습니다.