Re: [问题] C++ unzip library

楼主: nobodycares (没人在乎)   2018-09-06 00:11:16
→ 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一样,只要你有心、够狂就好。
作者: largesperm (reindeer)   2017-09-05 10:05:00
现在还是有一点很不解 为什么几乎每个压缩解压缩都是说可以解到 heap or mem 这样我要怎么存取解压出来的档案 可能我观念还没有很好 再研究看看就能用 但是 C++ 平台有很多种 所以大多都是看到直接给 .h.c.cpp 然后使用者再拿去自己的平台 compile不然的话 作者就得在每个平台 compile 出 lib这样想不知道是不是正确的是 感谢解惑 问题实在有点蠢 再努力学习 感谢

Links booklink

Contact Us: admin [ a t ] ucptt.com