2017-04-22 62 views
1

当谈到压缩算法时,我并不十分精通。C++和SharpZipLib

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

我现在想要使用C++来处理数据。由于它是一种zip格式,我们正在讨论deflate算法,对吧?

我正确地认为任何处理zip压缩的C++库都使用该算法,并且它与C#版本兼容吗? 3级压缩是一个zip标准,还是C#lib特有的东西?

基本上,在寻找和实现库到我的代码中时,我需要注意什么,如果有的话?

回答

1

既然是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 

我是正确的假设,任何C++库,与ZIP压缩涉及使用该算法,它是用C#版本兼容?

这真的取决于图书馆的作者来决定他们支持一下,虽然DEFLATE 应该几乎在每一个压缩库来实现,由于其广泛使用。尽管不是所有的库都与SharpZipLib兼容,因为不同的程序员对于如何最好地组织他们的代码会有不同的想法。

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

它是标准的一部分。

4 - The file is Reduced with compression factor 3 

基本上,我有什么看出来的,如果有的话,寻找和实现库到我的代码是什么时候?

确保库支持您要使用的任何压缩方法,确保API对你有意义的,并试图找到正在使用的库的基准来看看它是多么快。例如,如果您需要使用zip数据而不是读取和写入磁盘,那么确保该库可以写入流或字节缓冲区以便通过网络进行发送。

Link符合ZIP规范。

0

压缩等级是在压缩时选择的速度与压缩比的权衡。它对解压缩器解压缩的能力没有任何影响。

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