Seltsames Verhalten beim Setzen von Bits
Verfasst: 25. Februar 2014 19:23
Hallo,
ich habe ein seltsames Verhalten beim Setzen von Bits in einem QByteArray.
Kann mir das jemand erklären? Also das am Ende.
Der Testcode ist dieser:
Ich sitze nun schon einige Stunden dran seit gestern. Aber ich finde einfach den Fehler nicht.
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() << "------------------------------";
}