看板 C_and_CPP 關於我們 聯絡資訊
largesperm: 現在還是有一點很不解 為什麽幾乎每個壓縮解壓縮都是09/05 10:05
largesperm: 說可以解到 heap or mem 這樣我要怎麼存取解壓出來的09/05 10:05
largesperm: 檔案 可能我觀念還沒有很好 再研究看看09/05 10:05
解壓縮跟壓縮一定需要運算 運算就得用CPU 資料都是 硬碟 -> 記憶體 -> 快取 -> 暫存器 就算有個包裝好的API給你,內部的黑箱子也是這樣處理 高階語言你只要了解記憶體操作就好,至於要怎麼存取解壓縮的檔案,這會跟壓縮格式 有別。一般壓縮檔都會有類似索引的資訊,告訴你特定檔案的偏移量;至於能不能局部 解壓縮這要視演算法跟格式而定。 所以一般的流程是: 1. 取得壓縮檔案的資訊 2. 配置緩衝(Buffer)空間 3. 解壓縮直到目標檔案的區塊都解完 但老實講解壓縮/壓縮只是演算法,他的目標不一定是檔案,你要搞懂的是被壓 縮的資料是什麼/怎麼解讀。剩下的東西完全就是觀念問題: 例如你配置的是 4096 bytes 的Buffer,每次解壓縮 4096 到記憶體內後,就馬上用 file stream寫到硬碟檔案,整個流程完成後再讀回來,這是最簡單最陽春的做法。但 是如果你的目的,比方說只是要把目標資料顯示或再做處理,比方說raw image,直接在 記憶體作業就好,寫到硬碟只是浪費時空間而已。
largesperm: 就能用 但是 C++ 平台有很多種 所以大多都是看到09/05 10:30
largesperm: 直接給 .h.c.cpp 然後使用者再拿去自己的平台 compile09/05 10:31
largesperm: 不然的話 作者就得在每個平台 compile 出 lib09/05 10:31
largesperm: 這樣想不知道是不是正確的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
largesperm: 是 感謝解惑 問題實在有點蠢 再努力學習 感謝 09/06 03:43