У меня проблемы с распаковкой данных из файла.
Вот где я нахожусь:
Сжатый файл с помощью функции compress ().
const char data [] =
{
#include "file.data"};
ulong srcLen = strlen(data)+1;
ulong destLen = compressBound(srcLen);
char* dest = (char*) malloc(destLen);
int res = compress2((Bytef*) dest, &destLen, (Bytef*)data, srcLen, 5);
взял результат и положил в файл.
ofstream stream;
stream.open("/tmp/zip_file.data");
stream << o2stream;
stream.close();
hexdump -v -e '1/1 "0x%x, "' zip_file.data > /tmp/hex_zipped_file.data
в исходном коде сделал это:
const char zipped_data [] =
{
#include "hex_zipped_file.data"};
ulong destLen = 1000000;
ulong srcLen = strlen(zipped_data)+1;
char* o2stream = (char*) malloc(destLen);
res = uncompress((Bytef*)o2stream, &destLen, (Bytef*)zipped_data, srcLen);
В "res" я получил Z_DATA_ERROR.
Данные внутри hex_zipped_file.data выглядят примерно так:
0xf1, 0x44, 0x4d ... etc ...
При попытке распаковать ту же информацию, но взятую из переменной "dest", которая была заполнена функцией сжатия, это сработало.
Я сравнил: "dest" и "zipped_data", и они имеют одинаковую длину и содержат одинаковые символы.
Размер 1000000 не является проблемой - я пробовал тот же размер, что и исходный файл, но он все равно не удался.
Есть идеи, в чем может быть проблема?
Задача ещё не решена.
Других решений пока нет ...