Почему использование lz4 lib для распаковки данных не удается, но работает нормально при использовании unlz4? - PullRequest
1 голос
/ 04 апреля 2019

Я пишу код для распаковки закодированного буфера LZ4. Сбой операции при вызове LZ4_decompress_safe. Ошибка: «ERROR_contentChecksumFlag_invalid». Во входных данных нет ничего плохого, потому что я записал в файл тот же буфер и использовал unlz4 для его правильного декодирования. Используемая мной версия библиотеки lz4-dev: 1.7.1 (Xenial Ubuntu Pkg).

Библиотека lz4, которую использует unlz4: 1.7.1. Я в недоумении, в чем проблема.

Код, который я использую:

std::ofstream dbgfile("~/lz4_dbg", std::ios::out | std::ios::binary);
dbgfile.write(entry_buffer, entry_size);
dbgfile.close();

char* lz4_buffer = (char*)calloc(1, entry_size*4);
uint64_t bytes_decompressed = LZ4_decompress_safe(entry_buffer, lz4_buffer, entry_size, entry_size * 4); 

std::string err = LZ4F_getErrorName(bytes_decompressed);

1 Ответ

1 голос
/ 04 апреля 2019

Таким образом, проблема заключалась в том, что я просто не был знаком с библиотекой lz4 и не осознавал, что существует два разных способа распаковки данных lz4 (через LZ4 или LZ4Framing).

Использование обычного LZ4 не удалось, но переключение на LZ4Framing сработало.

Спасибо, Шон.

...