Название: QBitArray в QByteArray Отправлено: vorotislav от Январь 12, 2015, 09:02 Доброго времени суток всем.
У меня есть функция, которая переводит массив битов в массив байтов: Код: QByteArray Packet::bitsToBytes(const QBitArray &bits) И мне надо два массива битов перевести. Если массив Bits: QBitArray(1110 0111) правильно переводит в byte2: "e7" То массив Bits: QBitArray(1100 0000) не правильно. Причем ответ меняется. То это byte1: "23", а бывает и byte1: "3b". А мне надо чтоб "c0" получился. Массив битов не меняется. Я может что-то не понимаю в битовых и байтовых операциях? Если на калькуляторе переводить, то все верно. А программа выдает ересь. Заранее благодарен за помощь. Название: Re: QBitArray в QByteArray Отправлено: Fat-Zer от Январь 12, 2015, 09:24 bytes.fill(0);
Название: Re: QBitArray в QByteArray Отправлено: Igors от Январь 12, 2015, 09:33 bytes.fill(0); Может еще лучше такКод
Название: Re: QBitArray в QByteArray Отправлено: vorotislav от Январь 12, 2015, 09:46 Fat-Zer, Igors, спасибо! Ваши советы помогли сдвинуться с мертвой точки.
Оказывается всю последовательность битов он читал с конца. Получалось, что Bits: QBitArray(1100 0000), в байты переделывал как 0000 0011. А со вторым массивом мне просто повезло, что он зеркальный. В итоге пока это писал, понял где моя ошибка затаилась, и теперь все работает правильно. А подскажите пожалуйста, вот у меня есть массив из двух байт "с0" и "е7". Т.к. это контрольная сумма, мне надо её сравнить с той, что я посчитал пока принимал пакет. Как мне этот массив в int переделать? Заранее благодарен! Название: Re: QBitArray в QByteArray Отправлено: Igors от Январь 12, 2015, 10:35 А подскажите пожалуйста, вот у меня есть массив из двух байт "с0" и "е7". Т.к. это контрольная сумма, мне надо её сравнить с той, что я посчитал пока принимал пакет. Как мне этот массив в int переделать? Выходит данные приходят в big endian (первый байт старший). Получив 2 байта (b1 и b2) надо их переставить, напрКод
Название: Re: QBitArray в QByteArray Отправлено: vorotislav от Январь 12, 2015, 11:42 Спасибо!
|