ich habe ein seltsames Verhalten beim Setzen von Bits in einem QByteArray.
Kann mir das jemand erklären? Also das am Ende.
Code: Alles auswählen
SetBit1: "00000000"
SetBit2: "00000001"
--------------------------
ClearBit1: "00000001"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "00000010"
--------------------------
ClearBit1: "00000010"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "00000100"
--------------------------
ClearBit1: "00000100"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "00001000"
--------------------------
ClearBit1: "00001000"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "00010000"
--------------------------
ClearBit1: "00010000"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "00100000"
--------------------------
ClearBit1: "00100000"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "01000000"
--------------------------
ClearBit1: "01000000"
ClearBit2: "00000000"
------------------------------
SetBit1: "00000000"
SetBit2: "1111111111111111111111111111111111111111111111111111111110000000"
--------------------------
ClearBit1: "1111111111111111111111111111111111111111111111111111111110000000"
ClearBit2: "00000000"
------------------------------
Code: Alles auswählen
#include <QCoreApplication>
#include <QDebug>
void SetBit(QByteArray &data, int byte, int bit);
void ClearBit(QByteArray &data, int byte, int bit);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QByteArray Test;
for (int i = 0; i < 8; ++i) {
SetBit(Test, 0, i);
ClearBit(Test, 0, i);
}
return a.exec();
}
void SetBit(QByteArray &data, int byte, int bit)
{
qDebug() << "SetBit1: " << QString("%1").arg(data[byte], 8, 2, QChar('0'));
data[byte] = data[byte] | (1 << bit);
qDebug() << "SetBit2: " << QString("%1").arg(data[byte], 8, 2, QChar('0'));
qDebug() << "--------------------------";
}
void ClearBit(QByteArray &data, int byte, int bit)
{
qDebug() << "ClearBit1: " << QString("%1").arg(data[byte], 8, 2, QChar('0'));
data[byte] = data[byte] & ~(1 << bit);
qDebug() << "ClearBit2: " << QString("%1").arg(data[byte], 8, 2, QChar('0'));
qDebug() << "------------------------------";
}