Разделение файла на части по его заголовку с hex адресами блоков

Заранее благодарю за помощь!

Суть: Файл разделен на блоки. Он содержит заголовок, в котором хранятся данные о нахождении последнего символа каждого блока в виде hex записи.

Задача: Разделить файл на блоки и записать в другие файлы согласно данным, указанным в заголовке.

Структура заголовка:

struct Header
{
    unsigned int a;
    unsigned char b;
    unsigned int cSize;
    unsigned int dSize;
    unsigned int eSize;

};

Ввод файлов:

QFile file ("example.example");
QFile file1 ("example1.example");

Считывание данных в заголовок:

Header header;
QByteArray data = file.readAll();
memcpy(&header, data.data(), sizeof(Header));

Запись в файл:

int position = sizeof(Header);
cout << "Length_File:" << data.length() << endl;
QByteArray c_Container = data.mid(position, header.сSize);
position += header.сSize;
cout << "Length_c_Container:" << c_Container.length() << endl;
file1.write(c_Container);

Проблема: При выполнении команды ниже, программа выводит строку с числом(1797291264), которое на порядок выше размера исходного файла(7486633). Спустя время я пришел к выводу, что программа таким образом переводит hex значение в 10-тичное.

cout << "Length_с:" << header.cSize

По этой причине функция .mid записывает в c_Container полный размер файла, так как получается, что переменная header.сSize равна огромному числу, намного выше чем размер исходного файла.

Вопрос: Как сделать так, чтобы в функции .mid происходило обращение к области памяти, а не к значению перевода hex в 10-чную систему? Возможно надо использовать другую функцию или какую-то переменную вводить?


Ответы (0 шт):