下面的代碼工作得很好,我可以得到我想,如果我忽略了錯誤信息,一旦我運行的結果。我得到的錯誤是:調試錯誤! 程序:C:\ QT \ qt5.5.1 \ 5.5 \ msvc2013_64 \ BIN \ Qt5Cored.dll 模塊:5.5.1 文件:全球\ qglobal.cpp 行:2966 .....什麼是錯在我的代碼?爲什麼錯誤味精
如果我選擇忽視正確錯誤控制檯應用程序顯示的所有數據也顯示正確的位陣列也顯示了二進制數組正確的字符和最後還給出了字節字符正確的字節十進制值...
這是控制檯中的錯誤: ASSERT:「uint(i)< uint(size())」in file c:\ work \ build \ qt5_workdir \ w \ s \ qtbase \ sr c \ corelib \ tools \ qbytearray.h,行464
這是正確的輸出:
位是:QBitArray(0110 0011)
字節字符是 「c」
十進制格式字節爲:使用99
代碼:
QBitArray Alphabits(8);
Alphabits[0] = false;
Alphabits[1] = true;
Alphabits[2] = true;
Alphabits[3] = false;
Alphabits[4] = false;
Alphabits[5] = false;
Alphabits[6] = true;
Alphabits[7] = true;
QByteArray Alphabytes;
// Convert from QBitArray to QByteArray
for(int b=0; b<Alphabits.count();++b) {
Alphabytes[b/8] = (Alphabytes.at(b/8) | ((Alphabits[b]?1:0)<<(7-(b%8))));
}
qDebug() << "Bits are:" << Alphabits;
qDebug() << "Byte Char is" << Alphabytes;
qDebug() << "Decimal format Bytes are: "<< static_cast<quint8>(Alphabytes[0]);
我不確定,但我認爲你應該使用'reinterpret_cast'而不是'static_cast' – Evgeny