2017-04-22 63 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文件包含壓縮條目。您可以使用任何解壓縮程序列出內容並找出。