PHP在C#中的'gzuncompress'功能? 在C#中是否有类似于PHPs gzuncompress的函数?
答案 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,因为它可以更方便地扩展到大数据。