Zlib compression in boost :: iostreams is not compatible with zlib.NET

I want to send compressed data between my C # to a C ++ application in ZLIB format. In C ++, I use zlib_compressor / zlib_decompressor, available in boost :: iostreams. In C #, I am currently using ZOutputStream, available in the zlib.NET library. First of all, when I compress the same data using both libraries, the results look different:

  • promotion :: iostreams :: zlib_compressor:

63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00

  1. zlib.NET (zlib.ZOutputStream):

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, which is present in zlib.NET, but not in boost).

Also, when I decompress data in boost that I compressed in zlib.NET, I cannot read from the stream, assuming something is wrong. It works when I try to decompress compressed data in boost.

Does anyone know what is going wrong?

Thank,

Johan

+3
2

, boost:: iostreams:: zlib_compressor , zlib.NET , .

Tcl:

% set s {78 9C 63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00 4F 31 63 8D}
78 9C 63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00 4F 31 63 8D
% set b [binary format H* [join $s ""]];string length $b
23
% zlib decompress $b
ðStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringString
% zlib inflate $b
data error
% set s {63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00}
63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00
% set b [binary format H* [join $s ""]];string length $b
17
% zlib decompress $b
data error
% zlib inflate $b
ðStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringStringString

( zlib decompress "compress", zlib inflate "raw deflated".)

+3

, zlib.NET Boost iostreams, : DotNetZip (http://dotnetzip.codeplex.com/), .

0

Source: https://habr.com/ru/post/1745184/


All Articles