我需要在Windows和Ubuntu之间进行跨平台压缩/解压缩。据我了解,从.NET 4.5开始,DeflateStream类使用zlib作为压缩库。我编写了两个小型测试程序来压缩数据,一个运行在Windows上的C#程序,另一个运行在Ubuntu上的'C'程序。.NET平台是4.5.2。
C#代码使用CompressionLevel.Optimal
C代码使用Z_BEST_COMPRESSION
以下是结果:
C#代码使用CompressionLevel.Optimal
C代码使用Z_BEST_COMPRESSION
以下是结果:
Input bytes: {9, 12, 13}
C# output: {227, 228, 225, 5, 0};
C output: {120, 218, 227, 228, 225, 5, 0, 0, 67, 0, 35}
正如您所见,C#中压缩数据的长度为5个字节,而C中为11个字节。看起来'C' zlib在头部添加了2个额外的字节,在尾部添加了4个额外的字节。
如果需要,我可以分享代码。但是,这些代码是从网络上看到的标准示例中获取的,没有什么特别之处。
我是否漏掉了什么?有没有办法解决它?如果头部和尾部始终保持不变,也许我可以始终添加额外的字节。谢谢。