System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 解压数据的方法、压缩数据的方法、装置及设备制造方法及图纸_技高网

解压数据的方法、压缩数据的方法、装置及设备制造方法及图纸

技术编号:44554900 阅读:5 留言:0更新日期:2025-03-11 14:17
本申请提供了一种解压数据的方法、压缩数据的方法、装置及设备,方法包括:获取压缩数据包,并解析压缩数据包,得到包头以及压缩数据;包头包括映射表以及解码表;映射表包括多个指示码字以及多个基地址;指示码字与基地址一一对应;针对一次查询,基于索引信息查询映射表,得到指示码字以及基地址;针对一个基地址,基于基地址查询解码表,得到至少一个解码字符;每个基地址指示一个存储区域;基地址指示压缩数据中至少一个偏移地址码字;针对一个匹配字符参数,基于匹配字符参数查询预设字典,得到原始字符,得到原始字符;将多个原始字符与多个未匹配字符拼接,得到目标解压数据。本申请的技术方案,简化了实现逻辑,进而易于硬件实现。

【技术实现步骤摘要】

本申请涉及数据处理,特别涉及一种解压数据的方法、压缩数据的方法、装置及设备


技术介绍

1、gzip是一种基于deflat(解压)算法的无损文件压缩格式。在编码的过程中,deflate算法对数据进行了两个操作:预处理(前缀编码)和哈夫曼编码(huffman)。首先,预处理操作使用了lz77(lempel-ziv 1977)的算法,该算法扫描输入数据并将重复的数据块替换为指针。这样,文件中的重复数据只需要存储一次,从而减少了文件大小。其次,哈夫曼编码对预处理后的数据块继续进行压缩。

2、在解码的过程中,哈夫曼解码包括静态解码以及动态解码。其中,静态解码需要查多个表。而动态解码不仅需要查多个表,还需要构建多个表以及做游程编码。因此,相关技术中的哈夫曼解码方法实现逻辑复杂,不易于硬件实现。


技术实现思路

1、本申请实施例提供了一种解压数据的方法、压缩数据的方法、装置及设备,在解码的过程中,减少了查表的数量,也无需重新建表以及做游程编码,从而简化了实现逻辑,进而易于硬件实现。该技术方案如下:

2、根据本申请实施例的第一方面,提供了一种解压数据的方法,方法包括:

3、获取压缩数据包,并解析所述压缩数据包,得到包头以及压缩数据;所述包头包括映射表以及解码表;所述映射表包括多个指示码字以及多个基地址;所述指示码字与所述基地址一一对应;所述解码表包括多个解码字符;所述压缩数据包括索引信息;

4、针对一次查询,基于所述索引信息查询所述映射表,得到所述指示码字以及所述基地址;

5、针对一个所述基地址,基于所述基地址查询所述解码表,得到至少一个所述解码字符;所述解码字符包括匹配字符参数以及未匹配字符;

6、针对一个所述匹配字符参数,基于所述匹配字符参数查询预设字典,得到原始字符;

7、将多个所述原始字符与多个所述未匹配字符拼接,得到目标解压数据。

8、在一种可能的实现方式中,每个所述基地址指示一个初始存储区域;所述基地址指示所述压缩数据中至少一个偏移地址码字;每个所述偏移地址码字指示一个偏移地址;每个所述偏移地址指示一个偏移存储区域;所述初始存储区域以及所述偏移存储区域为所述解码表的一部分;所述初始存储区域用于存储一个所述解码字符;所述偏移存储区域用于存储一个所述解码字符。

9、在一种可能的实现方式中,所述匹配字符参数包括长度值以及偏移值;所述索引信息包括多个第一码长、多个第二码长以及多个第三码长;所述第一码长指示多个未匹配字符码字;所述第二码长指示多个长度值码字;所述第三码长指示多个偏移值码字。

10、在一种可能的实现方式中,所述映射表包括第一映射表以及第二映射表;所述第一映射表包括多个未匹配字符指示码字、多个第一基地址、多个长度值指示码字以及多个第二基地址;所述未匹配字符指示码字与所述第一基地址一一对应;所述未匹配字符指示码字小于或等于所述未匹配字符码字;所述长度值指示码字与所述第二基地址一一对应;所述长度值指示码字小于或等于所述长度值符码字;所述第二映射表包括多个所述偏移值指示码字以及多个第三基地址;所述偏移值指示码字与所述第三基地址一一对应;所述偏移值指示码字小于或等于所述偏移值码字。

11、在一种可能的实现方式中,所述针对一次查询,基于所述索引信息查询所述映射表,得到所述指示码字以及所述基地址,包括:

12、基于所述第一码长查询所述第一映射表,得到所述未匹配字符指示码字;基于所述未匹配字符指示码字查询所述第一映射表,得到所述第一基地址;或

13、基于所述第二码长查询所述第一映射表,得到所述长度值字符指示码字;基于所述长度值指示码字查询所述第一映射表,得到所述第二基地址;或

14、基于所述第三码长查询所述第二映射表,得到所述偏移值指示码字;基于所述偏移值指示码字查询所述第二映射表,得到所述第三基地址。

15、在一种可能的实现方式中,所述解码表包括第一解码表以及第二解码表;所述第一解码表包括多个所述未匹配字符以及所述长度值;所述第二解码表包括多个所述偏移值;

16、针对一个所述基地址,基于所述基地址查询所述解码表,得到至少一个所述解码字符,包括:

17、基于所述第一基地址获取至少一个第一偏移地址;基于所述第一基地址以及一个所述第一偏移地址,获取一个所述未匹配字符;所述第一基地址指示第一初始存储区域;所述第一初始存储区域是所述第一解码表的一部分;所述第一初始存储区域用于存储一个所述未匹配字符;所述第一基地址以及一个所述第一偏移地址指示第一偏移存储区域;所述第一偏移存储区域是所述第一解码表的一部分;所述第一偏移存储区域用于存储一个所述未匹配字符;或

18、基于所述第二基地址获取至少一个第二偏移地址;基于所述第二基地址以及一个所述第二偏移地址,获取一个所述长度值;所述第二基地址指示第二初始存储区域;所述第二初始存储区域是所述第一解码表的一部分;所述第二初始存储区域用于存储一个所述长度值;所述第二基地址以及一个所述第二偏移地址指示第二偏移存储区域;所述第二偏移存储区域是所述第一解码表的一部分;所述第二偏移存储区域用于存储一个所述长度值;或

19、基于所述第三基地址获取至少一个第三偏移地址;基于所述第三基地址以及一个所述第三偏移地址,获取一个所述偏移值;所述第三基地址指示第三初始存储区域;所述第三初始存储区域是所述第二解码表的一部分;所述第三初始存储区域用于存储一个区间码;所述第三基地址以及一个所述第三偏移地址指示第三偏移存储区域;所述第三偏移存储区域是所述第二解码表的一部分;所述第三偏移存储区域用于存储一个所述区间码;所述区间码指示一个所述偏移值。

20、在一种可能的实现方式中,所述方法,还包括:

21、针对一组对应的所述长度值以及所述偏移值,组合所述长度值与所述偏移值,得到一个匹配组合。

22、在一种可能的实现方式中,所述方法,还包括:

23、获取一个待处理数据;所述待处理数据为所述匹配组合或所述未匹配字符;

24、若所述待处理数据的类型标志为第一阈值时,则所述待处理数据为所述匹配组合;所述类型标志指示匹配组合或所述未匹配组合;

25、若所述待处理数据的所述类型标志为第二阈值时,则所述待处理数据为所述未匹配字符。

26、在一种可能的实现方式中,所述针对一个所述匹配字符参数,基于所述匹配字符参数查询预设字典,得到原始字符,包括:

27、针对一个所述匹配组合,当所述偏移值小于所述长度值,则基于所述预设字典以及所述偏移值确定所述原始字符,基于所述长度值复制所述原始字符,得到匹配数据;所述匹配数据的长度等于所述长度值;或

28、针对一个所述匹配组合,当所述偏移值大于所述长度值,则基于所述预设字典、所述偏移值以及差值确定所述匹配数据;所述差值为所述偏移值与所述长度值之差。

29、在一种可能的实现方式本文档来自技高网...

【技术保护点】

1.一种解压数据的方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,每个所述基地址指示一个初始存储区域;所述基地址指示所述压缩数据中至少一个偏移地址码字;每个所述偏移地址码字指示一个偏移地址;每个所述偏移地址指示一个偏移存储区域;所述初始存储区域以及所述偏移存储区域为所述解码表的一部分;所述初始存储区域用于存储一个所述解码字符;所述偏移存储区域用于存储一个所述解码字符。

3.根据权利要求1所述的方法,其特征在于,所述匹配字符参数包括长度值以及偏移值;所述索引信息包括多个第一码长、多个第二码长以及多个第三码长;所述第一码长指示多个未匹配字符码字;所述第二码长指示多个长度值码字;所述第三码长指示多个偏移值码字。

4.根据权利要求3所述的方法,其特征在于,所述映射表包括第一映射表以及第二映射表;所述第一映射表包括多个未匹配字符指示码字、多个第一基地址、多个长度值指示码字以及多个第二基地址;所述未匹配字符指示码字与所述第一基地址一一对应;所述未匹配字符指示码字小于或等于所述未匹配字符码字;所述长度值指示码字与所述第二基地址一一对应;所述长度值指示码字小于或等于所述长度值符码字;所述第二映射表包括多个所述偏移值指示码字以及多个第三基地址;所述偏移值指示码字与所述第三基地址一一对应;所述偏移值指示码字小于或等于所述偏移值码字。

5.根据权利要求4所述的方法,其特征在于,所述针对一次查询,基于所述索引信息查询所述映射表,得到所述指示码字以及所述基地址,包括:

6.根据权利要求4所述的方法,其特征在于,所述解码表包括第一解码表以及第二解码表;所述第一解码表包括多个所述未匹配字符以及所述长度值;所述第二解码表包括多个所述偏移值;

7.根据权利要求3所述的方法,其特征在于,所述方法,还包括:

8.根据权利要求7所述的方法,其特征在于,所述方法,还包括:

9.根据权利要求7所述的方法,其特征在于,所述针对一个所述匹配字符参数,基于所述匹配字符参数查询预设字典,得到原始字符,包括:

10.根据权利要求9所述的方法,其特征在于,所述针对一个所述匹配字符参数,基于所述匹配字符参数查询预设字典,得到原始字符,还包括:

11.根据权利要求7所述的方法,其特征在于,所述方法,还包括:

12.根据权利要求1所述的方法,其特征在于,所述压缩数据包括多个压缩数据块,所述包头包括每个所述压缩数据块的大小以及所述压缩数据块的数量。

13.一种压缩数据的方法,其特征在于,包括:

14.根据权利要求13所述的方法,其特征在于,所述对多个所述预处理组合进行分段,得到多个数据片段,包括:

15.根据权利要求13所述的方法,其特征在于,所述方法,还包括:

16.根据权利要求13所述的方法,其特征在于,所述方法,还包括:基于所述偏移值码字、所述长度值码字以及所述未匹配字符码字生成映射表以及解码表;所述映射表包括多个指示码字以及多个基地址;所述指示码字与所述基地址一一对应;所述解码表包括多个解码字符;每个所述基地址指示一个初始存储区域;每个所述基地址指示至少一个偏移地址;所述偏移地址指示一个偏移存储区域;所述初始存储区域以及所述偏移存储区域是所述解码表的一部分;所述初始存储区域用于存储一个所述解码字符;所述偏移存储区域用于存储一个所述解码字符;所述指示码字是基于所述偏移值码字、所述长度值码字以及所述未匹配字符码字中任意一种确定的。

17.一种解压数据的装置,其特征在于,包括:

18.一种压缩数据的装置,其特征在于,包括:

19.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器用于存储至少一段程序,所述至少一段程序由所述处理器加载并执行如权利要求1至权利要求12中任一项所述的解压数据的方法或权利要求13至权利要求16中任一项所述的压缩数据的方法。

20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至权利要求12中任一项所述的解压数据的方法或权利要求13至权利要求16中任一项所述的压缩数据的方法。

...

【技术特征摘要】

1.一种解压数据的方法,其特征在于,包括:

2.根据权利要求1所述的方法,其特征在于,每个所述基地址指示一个初始存储区域;所述基地址指示所述压缩数据中至少一个偏移地址码字;每个所述偏移地址码字指示一个偏移地址;每个所述偏移地址指示一个偏移存储区域;所述初始存储区域以及所述偏移存储区域为所述解码表的一部分;所述初始存储区域用于存储一个所述解码字符;所述偏移存储区域用于存储一个所述解码字符。

3.根据权利要求1所述的方法,其特征在于,所述匹配字符参数包括长度值以及偏移值;所述索引信息包括多个第一码长、多个第二码长以及多个第三码长;所述第一码长指示多个未匹配字符码字;所述第二码长指示多个长度值码字;所述第三码长指示多个偏移值码字。

4.根据权利要求3所述的方法,其特征在于,所述映射表包括第一映射表以及第二映射表;所述第一映射表包括多个未匹配字符指示码字、多个第一基地址、多个长度值指示码字以及多个第二基地址;所述未匹配字符指示码字与所述第一基地址一一对应;所述未匹配字符指示码字小于或等于所述未匹配字符码字;所述长度值指示码字与所述第二基地址一一对应;所述长度值指示码字小于或等于所述长度值符码字;所述第二映射表包括多个所述偏移值指示码字以及多个第三基地址;所述偏移值指示码字与所述第三基地址一一对应;所述偏移值指示码字小于或等于所述偏移值码字。

5.根据权利要求4所述的方法,其特征在于,所述针对一次查询,基于所述索引信息查询所述映射表,得到所述指示码字以及所述基地址,包括:

6.根据权利要求4所述的方法,其特征在于,所述解码表包括第一解码表以及第二解码表;所述第一解码表包括多个所述未匹配字符以及所述长度值;所述第二解码表包括多个所述偏移值;

7.根据权利要求3所述的方法,其特征在于,所述方法,还包括:

8.根据权利要求7所述的方法,其特征在于,所述方法,还包括:

9.根据权利要求7所述的方法,其特征在于,所述针对一个所述匹配字符参数,基于所述匹配字符参数查询预设字典,得到原始字符,包括:

10.根据权利...

【专利技术属性】
技术研发人员:刘磊
申请(专利权)人:北京爱芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1