Re: [問題] C++ unzip library
→
09/05 10:05,
09/05 10:05
→
09/05 10:05,
09/05 10:05
→
09/05 10:05,
09/05 10:05
解壓縮跟壓縮一定需要運算 運算就得用CPU
資料都是 硬碟 -> 記憶體 -> 快取 -> 暫存器
就算有個包裝好的API給你,內部的黑箱子也是這樣處理
高階語言你只要了解記憶體操作就好,至於要怎麼存取解壓縮的檔案,這會跟壓縮格式
有別。一般壓縮檔都會有類似索引的資訊,告訴你特定檔案的偏移量;至於能不能局部
解壓縮這要視演算法跟格式而定。
所以一般的流程是:
1. 取得壓縮檔案的資訊
2. 配置緩衝(Buffer)空間
3. 解壓縮直到目標檔案的區塊都解完
但老實講解壓縮/壓縮只是演算法,他的目標不一定是檔案,你要搞懂的是被壓
縮的資料是什麼/怎麼解讀。剩下的東西完全就是觀念問題:
例如你配置的是 4096 bytes 的Buffer,每次解壓縮 4096 到記憶體內後,就馬上用
file stream寫到硬碟檔案,整個流程完成後再讀回來,這是最簡單最陽春的做法。但
是如果你的目的,比方說只是要把目標資料顯示或再做處理,比方說raw image,直接在
記憶體作業就好,寫到硬碟只是浪費時空間而已。
→
09/05 10:30,
09/05 10:30
→
09/05 10:31,
09/05 10:31
→
09/05 10:31,
09/05 10:31
→
09/05 10:32,
09/05 10:32
你問的問題,很多都在計算機概論裡面。
至於.lib要不要重新編譯,這種是實務問題,就算同樣在Windows平台內,只要你的tool-
chain不同,依賴的.lib就不同。舉例來說,光是Visual Studio自家就有差異了,所以這
個差異的要點平台反而是其次,重點是編譯器還有執行環境、參數。
C++的規格並沒有規範到編譯的產物,絕大多數的語言也都沒有,所以語言跟平台沒有絕
對的關聯,就跟Google曾經想推NaCl一樣,只要你有心、夠狂就好。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.50.60.32
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1536163878.A.52A.html
推
09/06 03:43,
7年前
, 1F
09/06 03:43, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章