zlib压缩解压

zlib压缩解压
int Compress(const std::vector<unsigned char> &input, std::vector<unsigned char> &output)
{
    unsigned long dstLen = input.size();
    output.resize(dstLen);
    int iret = compress(&output[0], &dstLen, &input[0], input.size());
    if (Z_OK == iret) { output.resize(dstLen); }
    return iret;
}

int UnCompress(const std::vector<unsigned char> &input, std::vector<unsigned char> &output)
{
    unsigned long dstLen = input.size();
    int iret = Z_OK;
    int offset = 1;
    do
    {
        dstLen = (dstLen << offset);
        output.resize(dstLen);
        iret = uncompress(&output[0], &dstLen, &input[0], input.size());
        ++offset;
    } while (Z_BUF_ERROR == iret);
    if (Z_OK == iret) { output.resize(dstLen); }
    return iret;
}

你可能感兴趣的:(zlib压缩解压)