Доброго времени суток всем.
У меня есть функция, которая переводит массив битов в массив байтов:
QByteArray Packet::bitsToBytes(const QBitArray &bits)
{
qDebug() << "Bits: " << bits;
QByteArray bytes;
bytes.resize(bits.size()/8);
for (int b = 0; b < bits.count(); ++b)
bytes[b/8] = (bytes.at(b/8) | ( (bits[b] ? 1 : 0) << (b % 8)) );
return bytes;
}
И мне надо два массива битов перевести.
Если массив Bits: QBitArray(1110 0111) правильно переводит в byte2: "e7"
То массив Bits: QBitArray(1100 0000) не правильно. Причем ответ меняется. То это byte1: "23", а бывает и byte1: "3b". А мне надо чтоб "c0" получился.
Массив битов не меняется. Я может что-то не понимаю в битовых и байтовых операциях? Если на калькуляторе переводить, то все верно. А программа выдает ересь. Заранее благодарен за помощь.