Разделение файла на части по его заголовку с 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-чную систему? Возможно надо использовать другую функцию или какую-то переменную вводить?