QBuffer записывает байты в начале QByteArray, а не в конце

У меня есть следующий код:

QByteArray ba; // Declare Byte array
ba.clear();    // Clear it
ba.append(80, 0x00); // Append 80 bytes of 0x00
quint32 Count = 2;   // The number we want to append to the byte array
QBuffer tempBuffer(&ba); // We use temporary buffer to conveniently put integers and floats into byte-array
tempBuffer.open(QIODevice::WriteOnly);
Count = qToLittleEndian(Count); // Make sure our number is little Endian
tempBuffer.write((char*)&Count, sizeof(quint32)); // Write the number to byte array

Когда я печатаю в консоль содержимое моего байтового массива:

qDebug() << "ba: " << ba.toHex();

Консоль печатает:

ba:  "0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

Как видно выше, 2 который имеет тип quint32, правильно представлен шестнадцатеричным шестнадцатеричным значением 0x02000000однако он добавляется в начале байтового массива, а не в конце. Как я могу добавить свое значение в конец байтового массива?

1 ответ

Решение

Откройте буфер в режиме добавления, а не только для записи:

tempBuffer.open(QIODevice::Append);
Другие вопросы по тегам