2

我正在使用 DeflateStream 在我的机器上压缩短字符串

public byte[] Compress(byte[] oryginalBytes)
{
    using (var msi = new MemoryStream(oryginalBytes))
    using (var mso = new MemoryStream())
    {
        using (var gs = new DeflateStream(mso, CompressionMode.Compress))
        {
            msi.CopyTo(gs);
        }

        return mso.ToArray();
    }
}

并运行此代码:

Compress(Encoding.Unicode.GetBytes("[TEST]"));

在我的机器上(Windows 7 64 位)我得到 12 个元素的字节数组:

139 102 8 97 112 101 8 6 146 177 12 0

并在我的构建服务器(Windows 2008 64 位)上运行它,我有 120 个元素字节数组。

236 189 7 96 28 73 150 37 38 47 109 202 123 127 74 245 74 215 224 116 161 8 128 96 19 36 216 144 64 16 236 193 136 205 230 146 236 29 105 71 35 41 171 42 129 202 101 86 101 93 102 22 64 204 237 157 188 247 222 123 239 189 247 222 123 239 189 247 186 59 157 78 39 247 223 255 63 92 102 100 1 108 246 206 74 218 201 158 33 128 170 200 31 63 126 124 31 63 34 190 247 107 188 249 53 78 127 141 215 244 239 247 127 141 255 39 0 0 255 255

有人知道为什么这行为如此奇怪吗?

4

1 回答 1

3

DeflateStream 手册

该类代表 Deflate 算法,它是无损文件压缩和解压缩的行业标准算法。从 .NET Framework 4.5 开始,DeflateStream 类使用 zlib 库。因此,它提供了更好的压缩算法,并且在大多数情况下,它提供的压缩文件比早期版本的 .NET Framework 中提供的更小。

于 2013-10-03T15:12:13.627 回答