为了解压缩数据块,我正在使用 boosts iostreams::zlib_decompressor。第一个id想给你看我的boost解压代码
boost::iostreams::filtering_istreambuf in;
in.push(boost::iostreams::zlib_decompressor());
in.push(boost::interprocess::basic_vectorstream<std::vector<char>>(chunkData));
std::vector<char> decomp;
boost::iostreams::copy(in, boost::interprocess::basic_vectorstream < std::vector < char >> (decomp));
在复制时,我得到一个异常,zlib 报告了 Z_DATA_ERROR。
为了测试我的数据是否有问题,我将它写入一个文件,然后使用我自己的膨胀程序(它只是使用 zlibs 页面中关于膨胀的示例,默认设置)来膨胀该文件。我不仅没有收到任何错误,而且我的程序返回了正确的数据。
boost 是否使用了一些花哨的设置进行解压,还是我使用了 filtering_istreambuf 错误?