Я столкнулся с каким-то странным поведением GZipStream, зависящим от машины и ОС в .NET 4.0. Это соответствующий код:Зависимость машинной зависимости GZipStream
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")));
}
}
Запуск Сжать ("Фрик") дает мне
1F8B08000000000004004B2B4A4DCD06001E33909D05000000
на Windows 7 и
1F8B0800000000000400ECBD07601C499625262F6DCA7B7F4AF54AD7E074A10880601324D8904010ECC188CDE692EC1D69472329AB2A81CA6556655D661640CCED9DBCF7DE7BEFBDF7DE7BEFBDF7BA3B9D4E27F7DFFF3F5C6664016CF6CE4ADAC99E2180AAC81F3F7E7C1F3F22CEEB3C7FFBFF040000FFFF1E33909D05000000
на Windows Server 2008R2. Оба являются 64-битными. Я ожидаю, что результаты будут одинаковыми.
Обе машины дают правильный результат при распаковке любого результата. Я уже выяснил, что на W7 ms.Length == 25 пока на W2K8R2 ms.Length == 128, но не знаю, почему.
Что происходит?
Это может быть так же легко, как и в MemoryStream. Пробовал это без gzip? –
@ Хенк почему ты так думаешь? Является ли MemoryStream другими 123 байтами на W2K8R2? – Freek
Вы проверили в диспетчере задач, если обе машины показывают это как 64-битный процесс или нет? Как ваши настройки сборки? – weismat