社区
数据结构与算法
帖子详情
如何在一个压缩数据流中解压缩出指定原始数据中偏移位置的一块数据?
dxl
2001-01-06 03:10:00
比如有200M数据,压缩后得到100M的数据文件。要求在压缩后的数据中读出在原来200M
数据中偏移195M地方的100个字节数据,如何实现?可采用那一种压缩算法?请各位大虾
多多指教。
...全文
575
4
打赏
收藏
如何在一个压缩数据流中解压缩出指定原始数据中偏移位置的一块数据?
比如有200M数据,压缩后得到100M的数据文件。要求在压缩后的数据中读出在原来200M 数据中偏移195M地方的100个字节数据,如何实现?可采用那一种压缩算法?请各位大虾 多多指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kevin_qing
2001-01-10
打赏
举报
回复
压缩算法一般是分块计算的,拟可以根据块的信息跳过部分数据,直到找到某块包含你所需数据的部分或者全部,在解压该块即可得到数据。
比如设有一数据流in;我们需要解压offset开始的128字节。
0.计数器Cur=0;
1.读in,查找记录该块解压后大小的记录nSize。
2.cur+=nSize;
3;if(cur>offset) goto 4;否则从in读到信息里面找到下一个块记录的地址,in=下一个块记录的地址,goto 1.
4;解压该块并计数,储存offset后128字节数据。
其实还有简单但是效率很低的方法。即从头开始解压,把不需要的数据丢弃即可。
boldragon
2001-01-10
打赏
举报
回复
dxl:
我想这跟某种具体的压缩方法有关的,因为压缩后的数据一般而言,其前后的相关性是很大的。首先你得了解用的是那种压缩方法,然后才有可能在压缩数据中正确的寻址。一般来说,压缩后的数据是块状的(当然块长可能是可变的),首先按块寻址(找到块头,得到其块长),然后就可以在块内寻址,找出具体所需的数据,再解压出这部分数据。
sundayboys
2001-01-06
打赏
举报
回复
只有看了zip算法的原程序才行。
whoo
2001-01-06
打赏
举报
回复
建议你从压缩入手,如分段压缩等.
或者找一个WinZip的原码研究研究.
CSP30-3
解
压缩
西西艾弗岛运营公司的日志服务收集的日志
数据
量大,需高效
压缩
。小C要实现
解
压缩
日志程序。介绍了
压缩
算法产生的
数据
流
元素(字面量和回溯引用)、
数据
格式(导引域和
数据
域),还给
出
输入输
出
格式、样例及子任务,最后说明了解题思路。
CCF-CSP真题《202305-3
解
压缩
》思路+python,c++满分题解
文章描述了一种用于日志
数据
的
压缩
算法,包括字面量和回溯引用两种元素类型,以及如何
解
压缩
这两种元素。
解
压缩
过程涉及对字节的解析和
数据
的重复输
出
。给
出
了不同类型的回溯引用的表示方法和处理方式。
CCF-CSP认证考试 202305-3
解
压缩
100分题解
本文围绕 CSP 202305 - 3
解
压缩
题目展开,介绍了题目背景,即西西艾弗岛运营公司日志服务需
解
压缩
日志
数据
。详细说明了
压缩
算法产生的
数据
流
元素(字面量和回溯引用)及
数据
格式,给
出
输入输
出
格式、样例及子任务。题解指
出
按描述操作,用位运算判断元素类型,时间复杂度为 O(len(s))。
xz
压缩
文件的
解
压缩
过程
本文详细介绍了在Linux系统
中
squashfs文件系统的xz
解
压缩
过程,包括读取文件
数据
流
程及xz
解
压缩
的具体实现。
Android下文件的
压缩
和解压(Zip格式)
本文介绍了在Android
中
如何进行ZIP文件的
压缩
和
解
压缩
。主要涉及ZipFile、ZipEntry、ZipOutputStream等类的使用,以及
压缩
和
解
压缩
的基本流程。在
压缩
过程
中
,通过ZipOutputStream添加ZipEntry并写入文件
数据
;
解
压缩
时,从ZipFile
中
读取ZipEntry并输
出
到
指定
位置
。完整源码可在GitHub上查看。
数据结构与算法
33,026
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章