
On Wed, May 12, 2010 at 3:54 PM, Johan Ditmar
Hello,
I would like to send compressed data between my C# to a C++ application in ZLIB format. In C++, I use the iostreams::zlib_compressor/zlib_decompressor. In C# I am currently using the ZOutputStream available in the zlib.NET library. First of all, when I compress the same data using both libraries, the results look different:
1.boost::iostreams::zlib_compressor:
FF 13 49 48 00 00 01 00 01 00 00 00 63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00
2.zlib.NET (zlib.ZOutputStream):
FF 13 49 48 00 00 01 00 01 00 00 00 78 9C 63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00 4F 31 63 8D
(Note the 78 9C pattern that is present in zlib.NET, but not in boost).
Furthermore, when I decompress data in zlib_decompressor that I compressed in zlib.NET, I am not able to read from the stream suggesting something is wrong. It does work when I try to decompress data compressed in the zlib_compressor.
Does anybody know what is behind this incompatibility and whether there is an easy solution?
Have you tried opening both streams with an 'official' zlib program and see which is correct? Trying to decompress both of them (with and without header) gives invalid block type errors to me when using the zlib library itself.