Зависимость GZipStream от машины

) Я столкнулся с каким-то странным поведением GZipStream, зависящим от машины/ОС, в .NET 4.0. Это соответствующий код:

public static string Compress(string input) {
    using(var ms = new MemoryStream(Encoding.UTF8.GetBytes(input)))
    using(var os = new MemoryStream()) {
        using(var gz = new GZipStream(os,CompressionMode.Compress,true)) {
            ms.CopyTo(gz);
        }
        return string.Join("",os.ToArray().Select(b=>b.ToString("X2")));
    }
}

Running Compress("freek") дает мне

1F8B08000000000004004B2B4A4DCD06001E33909D05000000

в Windows 7 и

1F8B0800000000000400ECBD07601C499625262F6DCA7B7F4AF54AD7E074A10880601324D8904010ECC188CDE692EC1D69472329AB2A81CA6556655D661640CCED9DBCF7DE7BEFBDF7DE7BEFBDF7BA3B9D4E27F7DFFF3F5C6664016CF6CE4ADAC99E2180AAC81F3F7E7C1F3F22CEEB3C7FFBFF040000FFFF1E33909D05000000

в Windows Server 2008R2. Оба 64-битные. Я ожидаю, что результаты будут одинаковыми.

Обе машины дают правильный результат, когда я распаковываю любой результат. Я уже выяснил, что на W7 ms.Length == 25, а на W2K8R2 ms.Length == 128, но не знаю, почему.

Что происходит?

15
задан Nick Craver 13 July 2012 в 13:25
поделиться