Создание:
QByteArray create(const QByteArray &fname, const QByteArray &fdata) {
QByteArray data;
QBuffer buffer(&data);
buffer.open(QIODevice::WriteOnly);
QDataStream stream(&buffer);
stream << fname << fdata;
return data;
}
Парсинг:
void parse(QByteArray &data, QByteArray &fname, QByteArray &fdata) {
QBuffer buffer(&data);
buffer.open(QIODevice::ReadOnly);
QDataStream stream(&buffer);
stream >> fname >> fdata;
}
QDataStream
внесёт в буфер два QByteArray
раздельно. Можно без проблем сохранять одинаковые типы Qt-контейнеров, поскольку каждый так или иначе сохраняет свой собственный размер автоматом при сериализации.