为什么使用lz4 lib解压缩数据会失败,但是在使用unlz4时可以正常工作?

时间:2019-04-04 01:39:31

标签: c lz4

我正在编写一些代码来解压缩LZ4编码的缓冲区。调用LZ4_decompress_safe时操作失败。给出的错误是“ ERROR_contentChecksumFlag_invalid”。输入数据没有问题,因为我将相同的缓冲区写到了文件中,并使用unlz4对其进行了很好的解码。我正在使用的lz4-dev lib版本是1.7.1(Xenial Ubuntu Pkg)。

unlz4使用的lz4库是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 个答案:

答案 0 :(得分:1)

所以问题是我只是不熟悉lz4库,并且没有意识到有两种不同的方法来解压缩lz4数据(通过LZ4或LZ4Framing)。

使用常规LZ4失败,但是切换到LZ4Framing可行。

感谢肖恩。