PHP在C#中的'gzuncompress'功能?

时间:2011-08-12 07:33:52

标签: c# php

PHP在C#中的'gzuncompress'功能? 在C#中是否有类似于PHPs gzuncompress的函数?

1 个答案:

答案 0 :(得分:2)

您可以使用GZipStream来读取数据。如果源本身是Stream,这会特别方便,但如果您有byte[],则只需使用new MemoryStream(existingData)

private static byte[] GZipUncompress(byte[] data)
{
    using(var input = new MemoryStream(data))
    using(var gzip = new GZipStream(input, CompressionMode.Decompress))
    using(var output = new MemoryStream())
    {
        gzip.CopyTo(output);
        return output.ToArray();
    }
}

还有:

private static byte[] GZipCompress(byte[] data)
{
    using(var input = new MemoryStream(data))
    using (var output = new MemoryStream())
    {
        using (var gzip = new GZipStream(output, CompressionMode.Compress, true))
        {
            input.CopyTo(gzip); 
        }
        return output.ToArray();
    }
}

另请注意,“inflate”/“deflate”方法类似,但使用DeflateStream

请注意,为方便起见,我这里仅使用byte[]方法;您通常更喜欢基于Stream的API,因为它可以更方便地扩展到大数据。