我想压缩一个byte []并返回一个byte []

sti*_*naq 1 .net c# compression

我想在C#中编写一个带有byte []并将其压缩到另一个byte []的方法,但我能找到的是从目录压缩到另一个目录(ZipFile库)的.

是否可以仅使用.NET平台?

Jon*_*eet 5

是否可以仅使用.NET平台?

当然 - 这正是System.IO.Compression命名空间的用途.例如,您可以使用GZipStream该类.使用a MemoryStream接收压缩数据,然后可以调用ToArray.

示例代码(未经测试):

public static byte[] Compress(byte[] data)
{
    using (var output = new MemoryStream())
    {
        using (var compression = new GZipStream(output, CompressionMode.Compress))
        {
            compression.Write(data, 0, data.Length);
        }
        return output.ToArray();
    }
}

public static byte[] Compress(byte[] data)
{
    using (var output = new MemoryStream())
    {
        using (var compression = new GZipStream(output, CompressionMode.Decompress))
        {
            compression.Write(data, 0, data.Length);
        }
        return output.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以使用DeflateStream另一种压缩形式.