除了使用GZipStream
类,我正在寻找有关在.NET中压缩数据的一些建议。
我希望能快速高效地压缩字节数组以便通过TCP发送它们。
除了使用GZipStream
类,我正在寻找有关在.NET中压缩数据的一些建议。
我希望能快速高效地压缩字节数组以便通过TCP发送它们。
byte[]
,则使用一个单独的 MemoryStream
。Serializer.SerializeWithLengthPrefix
/ Serializer.DeserializeWithLengthPrefix
操作(protobuf 本身没有终止符,因此需要一个长度前缀来处理不同的消息)。<AccountId>123</AccountId>
,而是编写 2 或 3 个字节。但对于 任意 byte[]
不适用。 - Marc GravellDotNetZip提供本地支持,具有非常友好的API,并且在我看来比SharpZipLib更灵活:
编辑:不幸的是,DotNetZip存在一些重大问题,并且该项目似乎不再得到积极维护。因此,这个库无法真正推荐用于生产代码。
更好的选择是使用SharpZipLib(如果您遵守他们基于GPL的许可证),其中一个zlib的.NET端口或.NET 4.5的zip支持,如这个答案所示。
SharpZipLib是一种替代方案。据说它比框架库GZipStream写得更加周到。
现在,.NET 3+已经内置了Zip支持,使用ZipPackage类即可。
LZMA 被认为是最好的压缩算法之一。7-Zip 是 LZMA 的公共领域 SDK 实现,可以在此免费下载:
7z的LZMA算法在除了像.wav和.bmp这样的“多媒体”文件之外,比RAR达到更高的压缩比,而RAR使用专门的例程胜过LZMA。其他免费的压缩软件,如NanoZip和FreeArc通常优于WinRAR。
GZipStream
,请解释原因/原因是什么会很有帮助。 - Matthew Flaschen