boost::iostreams中的Zlib压缩与Zlib.NET不兼容 我想用ZLIB格式把压缩数据发送到C++应用程序中。在C++中,我使用在Boosi::IoSoots中可用的ZLYbYask/ZLBBI解压缩器。在C#中,我目前正在使用zlib.NET库中提供的ZOutputStream。首先,当我使用两个库压缩相同的数据时,结果看起来不同: boost::iostreams::zlib_压缩器:
boost::iostreams中的Zlib压缩与Zlib.NET不兼容 我想用ZLIB格式把压缩数据发送到C++应用程序中。在C++中,我使用在Boosi::IoSoots中可用的ZLYbYask/ZLBBI解压缩器。在C#中,我目前正在使用zlib.NET库中提供的ZOutputStream。首先,当我使用两个库压缩相同的数据时,结果看起来不同: boost::iostreams::zlib_压缩器:,c#,compatibility,zlib,boost-iostreams,C#,Compatibility,Zlib,Boost Iostreams,63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00 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 (注意zlib.NET中存在的78 9C模式,但boost中没有) 此外,当我在boost中解压我在zlib.NET中压缩的数据时,我无法从流中读取数据,这表明有问题。当我尝试解压缩boost中压缩的
63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00
78 9C 63 61 60 60 F8 00 C4 C1 25 45 99 79 E9 23 87 04 00 4F 31 63 8D
(注意zlib.NET中存在的78 9C模式,但boost中没有)
此外,当我在boost中解压我在zlib.NET中压缩的数据时,我无法从流中读取数据,这表明有问题。当我尝试解压缩boost中压缩的数据时,它确实起作用
有人知道出了什么问题吗
谢谢,
Johan这是因为boost::iostreams::zlib_压缩程序代码正在生成原始的压缩数据,而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”格式扩展数据。)同样奇怪的是,boost库在默认情况下似乎不遗余力地将非原始格式放在够不着的地方,鉴于底层库对它们的支持很好。我想这一定是某种哲学上的东西。谢谢,帮了大忙。结果证明我无意中通过了Nou header选项来提升。。。啊!