Преобразование массива JSON в QByteArray - PullRequest
0 голосов
/ 13 марта 2019

У меня есть массив: [0xa, 0x0b, 0x0c]

Это хранится в QJsonArray, я хочу покрыть это QByteArray.Я искал решение и наткнулся на несколько методов, это то, что я пробовал, но это не правильно:

    QJsonObject::iterator itrBinary = objJSON.find(clsFileThread::mscszBinary);
    if ( itrBinary != objJSON.end() ) {
      QJsonArray aryBinary(itrBinary->toArray());
    //At this point aryBinary contains:
    //10,11,12 which is correct
      QJsonDocument doc(aryBinary);        
      QByteArray aryBytes(doc.toBinaryData());
    //Now aryBytes contains:
    //'q','b','j' why, how?
      qDebug() << aryBinary << aryBytes;
    }

После qDebug я получаю:

    QJsonArray([10,11,12]) "qbjs\x01\x00\x00\x00\x18\x00\x00\x00\x06\x00\x00\x00\f\x00\x00\x00J\x01\x00\x00j\x01\x00\x00\x8A\x01\x00\x00"

В QBytesArray я хочу именно то, что было помещено в QJsonArray, 10, 11, 12.

1 Ответ

0 голосов
/ 13 марта 2019

Спасибо "eyllanesc" за ввод, я бы подумал, что для этого будет встроенная функция, но вот решение:

    QJsonArray aryBinary(itrBinary->toArray());
    QJsonArray::iterator itrArray = aryBinary.begin();
    QByteArray aryBytes;
    while( itrArray != aryBinary.end() ) {
        aryBytes.append(static_cast<char>(itrArray->toInt()));
        itrArray++;
    }
    qDebug() << aryBinary << aryBytes;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...