我正在编写一些代码来解压缩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);
答案 0 :(得分:1)
所以问题是我只是不熟悉lz4库,并且没有意识到有两种不同的方法来解压缩lz4数据(通过LZ4或LZ4Framing)。
使用常规LZ4失败,但是切换到LZ4Framing可行。
感谢肖恩。