繁体   English   中英

C ++和SharpZipLib

[英]C++ and SharpZipLib

对于压缩算法,我不是很精通。

我有一段C#代码,它使用上述库来压缩和解压缩数据块。 它使用压缩级别3,但除此之外,它是最基本的实现。

我现在想使用c ++对这些数据执行相同的操作。 由于它是zip格式,因此我们正在讨论deflate算法,对吗?

我是否可以正确地假设任何处理zip压缩的c ++库都使用该算法并且与C#版本兼容? 3级压缩是zip标准还是C#lib独有的?

基本上,寻找并将代码库实现到我的代码中时,我需要注意什么?

由于它是zip格式,因此我们正在讨论deflate算法,对吗?

并非所有.zip文件都使用DEFLATE算法。 ZIP规范列出了它支持的大量不同的压缩方法:

4.4.5 compression method: (2 bytes)

    0 - The file is stored (no compression)
    1 - The file is Shrunk
    2 - The file is Reduced with compression factor 1
    3 - The file is Reduced with compression factor 2
    4 - The file is Reduced with compression factor 3
    5 - The file is Reduced with compression factor 4
    6 - The file is Imploded
    7 - Reserved for Tokenizing compression algorithm
    8 - The file is Deflated
    9 - Enhanced Deflating using Deflate64(tm)
   10 - PKWARE Data Compression Library Imploding (old IBM TERSE)
   11 - Reserved by PKWARE
   12 - File is compressed using BZIP2 algorithm
   13 - Reserved by PKWARE
   14 - LZMA (EFS)
   15 - Reserved by PKWARE
   16 - Reserved by PKWARE
   17 - Reserved by PKWARE
   18 - File is compressed using IBM TERSE (new)
   19 - IBM LZ77 z Architecture (PFS)
   97 - WavPack compressed data
   98 - PPMd version I, Rev 1

我是否可以正确地假设任何处理zip压缩的c ++库都使用该算法并且与C#版本兼容?

实际上,由库作者决定他们支持什么,尽管由于DEFLATE的广泛使用, 应该在几乎所有压缩库中实现。 但是,并非所有库都与SharpZipLib兼容,因为不同的程序员对如何最好地组织其代码会有不同的想法。

3级压缩是zip标准还是C#lib独有的?

它是标准的一部分。

    4 - The file is Reduced with compression factor 3

基本上,寻找并将代码库实现到我的代码中时,我需要注意什么?

确保该库支持您要使用的任何压缩方法,确保该API对您有意义,并尝试查找所使用库的基准以查看其速度。 例如,如果您需要对zip数据进行处理而不是对磁盘进行读写,那么请确保该库可以写入流或字节缓冲区以通过网络发送。

链接到ZIP规范。

压缩级别是在压缩时速度与压缩比之间的权衡。 它与解压缩器解压缩的能力无关。

您的zip文件很可能包含放气的条目。 您可以使用任何解压缩程序列出内容并查找。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM