QBitArray 和 QByteArray 互相转换

QByteArray 转换为 QBitArray

// QByteArray 转换为 QBitArray
static QBitArray bytesToBits(const QByteArray &bytes)
{
    QBitArray bits(bytes.count() * 8);
    for (int i = 0; i < bytes.count(); ++i)
        for (int b = 0; b < 8; ++b)
            bits.setBit(i * 8 + b, bytes.at(i) & (0x01 << (7 - b)));
    return bits;
}

QBitArray 转换为 QByteArray

// QBitArray 转换为 QByteArray
static QByteArray bitsToBytes(const QBitArray &bits)
{
    QByteArray bytes;
    bytes.resize(bits.count() / 8 + ((bits.count() % 8)? 1: 0));
    bytes.fill(0x00);
    for (int b = 0; b < bits.count(); ++b)
        bytes[b / 8] = ( bytes.at(b / 8) | ((bits[b] ? 1: 0) << (7 - (b % 8))));
    return bytes;
}

参考资料

  • https://stackoverflow.com/questions/8776261/qbitarray-to-qbytearray

你可能感兴趣的:(C++,/,Qt,c++,qt)