<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          #壓縮# C++壓縮與解壓常見方案

          共 5899字,需瀏覽 12分鐘

           ·

          2024-11-29 22:24

           文章所涉及內(nèi)容更多來自網(wǎng)絡(luò),在此聲明,并感謝知識的貢獻(xiàn)者!


          壓縮的格式

          壓縮的格式
          RAR和ZIP是兩種不同的壓縮格式,它們使用是不同的壓縮算法。zip是公開免費的,rar是私有的,申請了專利,一般情況下,rar的壓縮率更高,即同文件以.rar格式壓縮出來的要比.zip小。
          除此之外,還有兼容性問題,能壓縮和解壓.rar格式的軟件也可壓縮和解壓.zip文件,反之不行。

          zstd

          Zstd 簡介
          Zstandard(縮寫為Zstd)是由Facebook的Yann Collet開發(fā)的一個無損數(shù)據(jù)壓縮算法。Zstandard在設(shè)計上與DEFLATE(.zip、gzip)算法有著差不多的壓縮比,但有更高的壓縮和解壓縮速度。生成和解碼 .zst 格式。
          Zstd 環(huán)境配置
          在項目中包含頭文件#include "zstd/zstd.h"
          //#pragma comment(lib,"libzstd.lib");
          在項目exe目錄下面加入libzstd.dll文件
          在項目lib文件夾(或者其他什么文件夾)加入libzstd.lib
          Zstd 常見接口
          - 使用ZSTD_compressBound獲取最大壓縮緩沖區(qū)大小,然后申請緩沖區(qū);
          - 使用ZSTD_compress進(jìn)行壓縮
          - 可以使用ZSTD_getDecompressedSize來獲取壓縮后最大緩沖區(qū)大小;來申請解壓緩沖區(qū);

          解壓的方案

          解壓的方案
          基于zib庫的文件解壓縮
          (31條消息) C++ 使用zlib開源庫的minizip解壓縮文件及文件夾_幽_篁的博客-CSDN博客_c++ minizip
          https://blog.csdn.net/hallyz945/article/details/117856896

          基于zipper庫的文件解壓縮
          C++壓縮庫zipper的使用
          https://blog.csdn.net/u014552102/article/details/112387107

          基于7-zip和winar的文件解壓縮
          使用7-zip和winrar解壓文件,以及文件解包
          http://mail.itocm.com/a/13F7AF59F4464A7D906E22BFE759AAA3
          https://blog.csdn.net/llmys/article/details/87893606
          https://blog.csdn.net/u011718663/article/details/119574759
          https://www.pudn.com/news/6228dcf29ddf223e1ad2933b.html

          C++中,system的神級用法總和,實現(xiàn)用C++操作系統(tǒng)
          https://blog.csdn.net/eeeeaaddf/article/details/125185727https://blog.csdn.net/llmys/article/details/87893606
          https://www.52pojie.cn/thread-1340458-1-1.html

          基于ziputils庫的文件解壓縮
          環(huán)境配置
          Ziputils官網(wǎng)下載文件:
          Zip Utils - Clean, Elegant, Simple, C++/Win32 - CodeProject
          https://www.codeproject.com/Articles/7530/Zip-Utils-Clean-Elegant-Simple-Cplusplus-Win
          或github下載
          https://github.com/veis-lzf/zip_utils_src
          備注:
          Ziputils 不能處理復(fù)雜的zip壓縮包
          error C4996: ‘strcpy‘: This function or variable may be unsafe.解決方法
          https://blog.csdn.net/xuangelouzhu/article/details/112272701
          解決error C2760:語法錯誤: 意外的令牌“標(biāo)識符”,預(yù)期的令牌為“類型說明符”
          https://blog.csdn.net/it_xiangqiang/article/details/109715945
          fatal error C1083: 無法打開包括文件: “afx.h”: No such file or directory
          https://blog.csdn.net/qq_34430371/article/details/110926982
          參考連接
          https://blog.csdn.net/qq_45662588/article/details/117027726
          zlib 編譯
          https://zhuanlan.zhihu.com/p/426174324
          https://zhuanlan.zhihu.com/p/366490674
          https://copyfuture.com/blogs-details/20211208082710825q
          minizip c++ 壓縮文件及文件夾
          https://www.yisu.com/zixun/87946.html
          https://www.cnblogs.com/xuerongyi/p/12880331.html
          https://blog.csdn.net/hallyz945/article/details/117856896
          https://blog.csdn.net/m0_66220428/article/details/122463107
          https://blog.csdn.net/Alexabc3000/article/details/122821578
          linux minizip
          https://blog.csdn.net/whahu1989/article/details/80344373
          zipper
          https://github.com/sebastiandev/zipper
          https://blog.csdn.net/u014552102/article/details/112387107

          項目配置文件
          下載鏈接中有兩個文件夾,分別為解壓文件跟壓縮文件

          將解壓文件夾下的代碼文件添加至項目
          ziputils接口全部使用TCHAR類型參數(shù),所以要將你的解壓路徑轉(zhuǎn)換成TCHAR類型
          //將路徑轉(zhuǎn)為TCHAR類型
                  int iUnicode = MultiByteToWideChar(CP_ACP, 0, ZIPFileName_1.c_str(), ZIPFileName_1.length(), NULL, 0);
                  WCHAR* pwUnicode = new WCHAR[iUnicode + 2];
                  if (pwUnicode)
                  {
                      ZeroMemory(pwUnicode, iUnicode + 2);
                  }
                  MultiByteToWideChar(CP_ACP, 0, ZIPFileName_1.c_str(), ZIPFileName_1.length(), pwUnicode, iUnicode);
                  pwUnicode[iUnicode] = '\0';
                  pwUnicode[iUnicode+1] = '\0';
                  //解壓文件
                  SetCurrentDirectoryA(strdec.c_str());//將進(jìn)程的工作目錄移動到該參數(shù)所指的目錄下,該目錄為winrar.exe的默認(rèn)文件路徑
                  //解壓文件會直接在項目的.vcproj目錄下進(jìn)行
                  HZIP hz = OpenZip(pwUnicode,NULL);
                  ZIPENTRY ze;
                  GetZipItem(hz,-1,&ze);
                  int numitems = ze.index;
                  for (int zi = 0; zi < numitems; zi++)
                  {
                      ZIPENTRY ze;
                      GetZipItem(hz, zi, &ze);
                      UnzipItem(hz, zi,ze.name);         
                  }
                  CloseZip(hz);

          壓縮文件成zip
          //壓縮
          HZIP hz;
          hz = CreateZip("c:\\test.zip",0);
          ZipAdd(hz,"ztest.txt", "c:\\test.txt");
          CloseZip(hz);

          解壓縮zip文件
          //解壓
          HZIP hz;
          hz = OpenZip("c:\\test.zip",0);
          SetUnzipBaseDir(hz,"c:\\");
          ZIPENTRY ze;
          GetZipItem(hz,-1,&ze);
          int numitems = ze.index;
          for (int i = 0; i < numitems; i++)
          {
              GetZipItem(hz,i,&ze);
              UnzipItem(hz,i,ze.name);
          }
          CloseZip(hz);

          參考資料

          參考文檔
          (31條消息) C++利用Zip庫解壓縮文件_° LuK的博客-CSDN博客_c++ 解壓zip
          https://blog.csdn.net/qq_37771728/article/details/125865717
          (31條消息) C++解壓zip壓縮文件_痕憶丶的博客-CSDN博客_c++ 解壓
          https://blog.csdn.net/qq_37059136/article/details/83510764
          【C++ 壓縮&解壓縮 開源庫】ZIP入門使用總結(jié) - fengMisaka - 博客園 (cnblogs.com)
          https://www.cnblogs.com/linuxAndMcu/p/14508503.html#_label2
          (31條消息) Zip壓縮解壓縮之C++實現(xiàn)。_豬豬加大碼力的博客-CSDN博客_c++zip庫
          https://blog.csdn.net/Struggling_Jeff/article/details/100857364
          Zstandard(Zstd)新型壓縮算法代替Zlib 簡單使用教程 - wcctml - 博客園 (cnblogs.com)
          https://www.cnblogs.com/wcctml/p/7045686.html
          速度快,性能好!壓縮神器 zstd - 知乎 (zhihu.com)
          https://zhuanlan.zhihu.com/p/353505496
          zstd,未來可期的數(shù)據(jù)壓縮算法 - 簡書 (jianshu.com)
          https://www.jianshu.com/p/71eb3071d3e0
          zstd c++ string 壓縮&解壓 - fattyCoder - 博客園 (cnblogs.com)
          https://www.cnblogs.com/fattyCoder/p/14135278.html
          (31條消息) Zstandard(Zstd)新型壓縮算法代替Zlib 簡單使用教程_畢加索羅斯的博客-CSDN博客_zstd
          https://blog.csdn.net/u014134886/article/details/78746633
          rar和zip有什么區(qū)別呢?- 知乎 (zhihu.com)
          https://www.zhihu.com/question/376392236

          瀏覽 48
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲精品成人a v久久久 | 亚洲欧美高清在线观看 | 高清无码免费视屏 | 色拍拍最新网址 | 色婷婷伊人 |