bit, byte, string convert to each other
QBitArray byte2bitArray( const QByteArray& byteArray, bool flag )
{
QBitArray bits(byteArray.count()*8);
if( flag )
{
for(int i=0; i<byteArray.count(); ++i)
for(int b=0; b<8; ++b)
bits.setBit(i*8+b, byteArray.at(i)&(1<<b));
}
else
{
for(int i = 0; i < byteArray.count(); ++i) {
for(int b = 0; b < 8; b++) {
bits.setBit( i * 8 + b, byteArray.at(i) & (1 << (7 - b)) );
}
}
}
return bits;
}
QByteArray bit2byteArray( const QBitArray& bits, bool flag )
{
QByteArray bytes;
bytes.resize(bits.count()/8+1);
bytes.fill(0);
if( flag )
{
for(int b=0; b<bits.count(); ++b)
bytes[b/8] = (bytes.at(b/8) | ((bits[b]?1:0)<<(b%8)));
}
else
{
for(int b=0; b<bits.count(); ++b)
bytes[b/8] = (bytes.at(b/8) | ((bits[b]?1:0)<<(7-b%8)));
}
return bytes;
}
QString bitArray2String( const QBitArray& array )
{
QString arrStr = "";
for(int i = 0; i<array.size(); i++)
{
arrStr += array.at(i) ? '1' : '0';
}
return arrStr;
}
test code
QBitArray ba;
ba.fill(false,96);
ba.setBit(0,true);
ba.setBit(2,true);
QByteArray baa = bit2byteArray(ba);
qDebug() << ba;
qDebug() << baa.toHex();
qDebug() << bitArray2String(ba);
qDebug() << byte2bitArray(baa);
qDebug() << QByteArray::fromHex("AFFFFFFFFFFFFFFF");
qDebug() << byte2bitArray(QByteArray::fromHex("AFFFFFFFFFFFFFFF"));