2016-07-02 3 views
0

Как я могу преобразовать QBytearray в QBitarray? Qt руководство говорит это:конвертировать QBytearray в QBitarray

for(int i=0; i<8; ++i) { 
    for(int b=0; b<byteArray.count();b++) { 
     bits.setBit(i*8+b, byteArray.at(i)&(1<<(7-b))); 
    } 

Но это приводит к ошибке во время выполнения. Есть ли лучший способ сделать это?

ответ

2

Петля кажется странной, она индексирует байтовый массив с i, который идет до 8, но у байтаАррея может не быть 8 элементов. Необходимо просто переключить пределы контура:

for(int i = 0; i < byteArray.count(); ++i) { 
    for(int b = 0; b < 8; b++) { 
    bits.setBit(i * 8 + b, byteArray.at(i) & (1 << (7 - b))); 
} 
+0

спасибо, и как бы вы преобразовали uint16 в qbitarray? –