O resultado da compressão pode ser diferente (por exemplo, pode ter mais ou menos bytes), se você passar parâmetros de compressão diferentes.
Além disso, a Microsoft reimplementou a zlib do zero (você sabe - dinheiro e tempo sobrando, e naquele tempo ela tinha uma política ferozmente open-source), em vez de usar o código open-source em C que todo mundo usa (exceto ela).
O que importa (tanto na compressão gzip quando a zlib ou a bzip2) é que o resultado da descompressão seja idêntico ao original, e que no caso do gzip, que use as mesmas estruturas de dados e algoritmos, dessa maneira podendo ser descompactada por outra implementação como a open-source. Não é obrigatório que os bytes sejam exatamente iguais - nem o próprio gzip faz isso, se você passar parâmetros diferentes de compressão.
Tanto a implementação da Sun quanto a da Microsoft são feitas em C, e nesse caso os bytes são sempre unsigned. Mesmo em Java, com um pouco de esforço, você pode tratar os bytes como unsigned; mas você tem de fazer algumas operações &, por exemplo.
[quote=thingol]O resultado da compressão pode ser diferente (por exemplo, pode ter mais ou menos bytes), se você passar parâmetros de compressão diferentes.
Além disso, a Microsoft reimplementou a zlib do zero (você sabe - dinheiro e tempo sobrando, e naquele tempo ela tinha uma política ferozmente open-source), em vez de usar o código open-source em C que todo mundo usa (exceto ela).
O que importa (tanto na compressão gzip quando a zlib ou a bzip2) é que o resultado da descompressão seja idêntico ao original, e que no caso do gzip, que use as mesmas estruturas de dados e algoritmos, dessa maneira podendo ser descompactada por outra implementação como a open-source. Não é obrigatório que os bytes sejam exatamente iguais - nem o próprio gzip faz isso, se você passar parâmetros diferentes de compressão.
[/quote]
Realmente… passando o retorno da compressão C# no método de descompressão Java, ele me retorna a versão original…