使用Gzip压缩/解压缩一个字节数组

Lam*_*fif 12 .net c# arrays byte gzip

我需要压缩一个字节数组.所以我写了这个片段:

 class Program
    {
        static void Main()
        {
            var test = "foo bar baz";

            var compressed = Compress(Encoding.UTF8.GetBytes(test));
            var decompressed = Decompress(compressed);
            Console.WriteLine("size of initial table = " + test.Length);
            Console.WriteLine("size of compressed table = " + compressed.Length);
            Console.WriteLine("size of  decompressed table = " + decompressed.Length);
            Console.WriteLine(Encoding.UTF8.GetString(decompressed));
            Console.ReadKey();
        }

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

        static byte[] Decompress(byte[] data)
        {
            using (var compressedStream = new MemoryStream(data))
            using (var zipStream = new GZipStream(compressedStream, CompressionMode.Decompress))
            using (var resultStream = new MemoryStream())
            {
                zipStream.CopyTo(resultStream);
                return resultStream.ToArray();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

问题是我得到了这个输出:

产量

我不明白为什么压缩数组的大小大于解压缩的数组!

有任何想法吗?

编辑

在@ spender的评论之后:如果我改变test字符串例如:

var test = "foo bar baz very long string for example hdgfgfhfghfghfghfghfghfghfghfghfghfghfhg";
Run Code Online (Sandbox Code Playgroud)

我得到了不同的结果.那么要压缩的初始数组的最小大小是多少?

Ash*_*ani 7

压缩文件具有标题,并增加了文件大小,当输入大小非常小时,输出可能会更大,如您所见。尝试使用更大尺寸的文件。