LZ4没有正确压缩字符串

时间:2016-02-24 14:59:29

标签: c++ lz4

最近,我尝试将 无损数据压缩 集成到我的游戏引擎中以加载资产;但是这个简单的压缩示例似乎无法正常工作。有什么建议 ?这是我的代码:

AnyGenerator

这是输出。显然,你可以看到它的错误(缺少字符串的一部分):

 const char *srcData = "Hi ! This is a really really really long test string !";
 const int dstBufferSize = LZ4_compressBound(sizeof(srcData));
 char *dstData = new char[dstBufferSize];
 int bytesPassed = LZ4_compress_default(srcData, dstData,  
                                       sizeof(srcData), 
                                       dstBufferSize); // compress data
 BOOST_LOG_TRIVIAL(info) << dstData << std::endl; // print compressed data

 delete[] dstData;

修改 解压缩数据时,只有&#39; Hi&#39;部分出现:其余是随机字符/无字符

编辑2 在Simon的建议之后,我改变了代码;但解压缩后的代码;我才嗨! (之后没有);这是更新的代码:

[2016-02-24 15:56:47.986366] [0x00000b0c] [info]    @Hi !═══════════════²²²²À▀WÏÇ0

1 个答案:

答案 0 :(得分:3)

您正在使用sizeof(srcData),它将为您指定指针的大小,而不是指向它指向的数据。

您应该使用strlen(srcData)+1代替\0的+1。)

或者使用std::stringstd::string::size()(对于空终结符也是+1)。