解压缩附加的压缩字符串
Decompress appended compressed strings
我正在创建一个应用程序,我必须在其中存储大量字符串数据 - 以块的形式接收。
我正在尝试以压缩格式保存它。但是,如果我使用 zlib 压缩字符串并类似地向其附加更多压缩块,则解压失败。
std::string allinput = "AAAA";
std::string cstr1 = compress_string( allinput );
std::string allinput2 = "BBBB";
std::string cstr2 = compress_string( allinput2 );
std::string cstr = cstr1 + cstr2;
std::string out = decompress_string( cstr );
std::cout << "DECOMP:" << out << "\n" ;
使用上面的代码我得到以下输出:
AAAA
是否有一些方法可以解压缩附加的压缩字符串块
PS:compress_string
和 decompress_string
的实现可以从 C++ Code Snippet - Compressing STL Strings with zlib
中找到
你添加压缩块的想法行不通,你必须更换那个接口,https://panthema.net/2007/0328-ZLibString.html 到 zlib。
如果您查看 zlib 内部,您会发现压缩例程 deflate
将在用完要压缩的数据时停止,基于 avail_in
。
将其设置为您拥有的数据量,并在获得新字符串时增加。
(如果你想在每一步都有可用的结果,那就更复杂了。)
单独压缩多个字符串并将它们加在一起是可能的,但这是一个坏主意。它会增加开销,并产生更糟糕的结果,因为压缩是基于输入数据中的模式,并且通过多次压缩,您必须重新发现每个输入中的模式。
我正在创建一个应用程序,我必须在其中存储大量字符串数据 - 以块的形式接收。 我正在尝试以压缩格式保存它。但是,如果我使用 zlib 压缩字符串并类似地向其附加更多压缩块,则解压失败。
std::string allinput = "AAAA";
std::string cstr1 = compress_string( allinput );
std::string allinput2 = "BBBB";
std::string cstr2 = compress_string( allinput2 );
std::string cstr = cstr1 + cstr2;
std::string out = decompress_string( cstr );
std::cout << "DECOMP:" << out << "\n" ;
使用上面的代码我得到以下输出:
AAAA
是否有一些方法可以解压缩附加的压缩字符串块
PS:compress_string
和 decompress_string
的实现可以从 C++ Code Snippet - Compressing STL Strings with zlib
你添加压缩块的想法行不通,你必须更换那个接口,https://panthema.net/2007/0328-ZLibString.html 到 zlib。
如果您查看 zlib 内部,您会发现压缩例程 deflate
将在用完要压缩的数据时停止,基于 avail_in
。
将其设置为您拥有的数据量,并在获得新字符串时增加。
(如果你想在每一步都有可用的结果,那就更复杂了。)
单独压缩多个字符串并将它们加在一起是可能的,但这是一个坏主意。它会增加开销,并产生更糟糕的结果,因为压缩是基于输入数据中的模式,并且通过多次压缩,您必须重新发现每个输入中的模式。