Search code examples
qtqbytearrayqbuffer

QBuffer writes bytes at the start of QByteArray rather than the end


I have the following code:

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

When I print to console the content of my byte array:

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

The console prints:

ba:  "0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"

As can be seen above, the 2 which is of type quint32, is correctly represented by the little Endian hex value of 0x02000000, however, it is added at the start of the byte array rather than the end. How can I append my value to the end of the byte array?


Solution

  • Open the buffer in append mode instead of writeonly:

    tempBuffer.open(QIODevice::Append);