【发布时间】:2016-06-15 20:45:38
【问题描述】:
我需要在 Windows 和 Ubuntu 之间进行跨平台压缩/解压缩。据我了解,从 .NET 4.5 开始,DeflateStream 类使用 zlib 作为压缩库。我编写了两个小测试程序来压缩数据,一个是在 Windows 上运行的 C#,另一个是在 Ubuntu 上运行的“C”。 .NET 平台是 4.5.2。
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 个额外字节。
如果需要,我可以分享代码。不过是取自网上看到的标准示例,代码没有什么特别之处。
我错过了什么吗?有没有办法解决它?如果页眉和页脚始终保持不变,也许我总是可以添加额外的字节。问候。
【问题讨论】:
标签: .net compression zlib