Z_DATA_ERROR при распаковке из скомпилированного файла данных

У меня проблемы с распаковкой данных из файла.
Вот где я нахожусь:

  1. Сжатый файл с помощью функции 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);
    

  2. взял результат и положил в файл.

    
    ofstream stream;
    stream.open("/tmp/zip_file.data");
    stream << o2stream;
    stream.close();
    

  3. сделал hexdump - чтобы избежать проблем со случайными символами:
    
    hexdump -v -e '1/1 "0x%x, "' zip_file.data > /tmp/hex_zipped_file.data
    

  4. в исходном коде сделал это:

    
    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);
    

  5. В "res" я получил Z_DATA_ERROR.

  6. Данные внутри hex_zipped_file.data выглядят примерно так:

    
    0xf1, 0x44, 0x4d ... etc ...
    

При попытке распаковать ту же информацию, но взятую из переменной "dest", которая была заполнена функцией сжатия, это сработало.

Я сравнил: "dest" и "zipped_data", и они имеют одинаковую длину и содержат одинаковые символы.

Размер 1000000 не является проблемой - я пробовал тот же размер, что и исходный файл, но он все равно не удался.

Есть идеи, в чем может быть проблема?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет ...

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector