一种面向快速解压应用的轻量级无损压缩方法技术

技术编号:33738634 阅读:46 留言:0更新日期:2022-06-08 21:36
本发明专利技术公开了一种面向快速解压应用的轻量级无损压缩方法,通过已经出现的字符更新字典,根据字典查找当前字符串的匹配长度和距离,在搜索策略上采用两次哈希查找的方法,压缩格式上更加侧重较长的匹配字符串情况的同时简化编码情况分类,最终在解压过程中通过对地址的检查避免数据溢出导致的解压异常,提高了解压速度并解决溢出问题,新算法在LZO基础上,通过新的搜索策略和压缩格式解决现有无损压缩算法存在的解压速度慢、算法开销大、解压有溢出技术问题,有效地实现具有快速解压特点的轻量级无损压缩功能。的轻量级无损压缩功能。的轻量级无损压缩功能。

【技术实现步骤摘要】
一种面向快速解压应用的轻量级无损压缩方法


[0001]本专利技术涉及数据压缩领域,具体涉及一种面向快速解压应用的轻量级无损压缩方法。

技术介绍

[0002]随着网络技术的发展,数据存储和数据传输促使了数据压缩领域。相比于有损压缩,无损数据压缩在不丢失信息的前提下尽可能的去除原文中的冗余信息,确保解压后的数据和压缩前的数据完全一致。而无损压缩领域中基于字典LZ系列算法有着举足轻重的地位。
[0003]LZ系列的无损压缩算法按适用情况可以分为两类:一类是LZ77、LZO等轻量级压缩算法,该类算法原理较为简单,算法实现代价小,适合在嵌入式处理器中运行,但压缩率比较低。另一类是DEFLATE、LZMA等压缩率较高的算法,然而其原理较为复杂,算法代码量和资源开销较大,不适合在嵌入式处理器中运行。

技术实现思路

[0004]针对现有技术中的上述不足,本专利技术提供了一种面向快速解压应用的轻量级无损压缩方法。
[0005]为了达到上述专利技术目的,本专利技术采用的技术方案为:
[0006]一种面向快速解压应用的轻量级无损压缩方法,包括如下步骤:
[0007]S1、利用两倍大小的LZ0算法词典进行两次匹配查找,同时对匹配成功的词典页进行更新;
[0008]S2、对匹配成功的距离和匹配长度信息,按照存储距离不同分别进行压缩存储;
[0009]S3、对压缩存储之后的文件通过编码的第一个字节对编码类型进行判断,根据编码结果恢复匹配长度和距离;
[0010]S4、采用边界检测方法对每次存储空间进行写操作时的安全检查,判断解压是否发生数据溢出。
[0011]进一步的,所述S1中两次匹配查找的方式为:
[0012]S11、依次利用匹配字典的两页进行个匹配,并判断匹配结果;
[0013]S12、若第一次匹配失败则不再进行第二次哈希运算,直接采用第一次匹配时哈希值作为索引在第二页词典中继续查询是否有匹配项;
[0014]S13、若两次匹配均不成功,则把当前数据作为新字符不做压缩直接输出;
[0015]S14、若两次匹配均成功,则使用匹配长度较长的匹配信息进行压缩处理,同时对词典页进行更新。
[0016]进一步的,所述S2中当存储距离小于2K字节的匹配信息时,采用第一类存储格式进行压缩存储;当存储距离大于或等于2K字节的匹配信息时,采用第二类存储格式进行压缩存储。
[0017]进一步的,所述第一类存储格式包括第一压缩存储格式和第二压缩存储格式,其中,所述第一压缩存储格式用于表示识匹配长度小于18字节时的压缩格式,此时的匹配长度采用减2表示方法,匹配距离采用11个比特位表示,匹配长度采用4个比特位表示;所述第二压缩存储格式用于表示匹配长度大于或等于18字节且小于256字节时的压缩格式,其中,匹配距离用11个比特位表示,匹配长度采用8个比特位来表示。
[0018]进一步的,所述第二类存储格式包括第三压缩存储格式和第四压缩存储格式,其中,所述第三压缩存储格式用于表示匹配长度小于19字节时的压缩格式,其匹配长度采用减3表示方法,4个比特位表示;所述第四压缩格式用于表示匹配长度大于等于19字节且小于256字节时的压缩格式,
[0019]进一步的,所述S3具体包括:
[0020]S31:取首字节W,W和0xC0做与运算,如果结果等于0x80输出原来的字符,跳转第五步。如果结果不为0x80,跳转S32;
[0021]S32:判断W结果是否等于0xC0,等于转S33,不等于转S34。
[0022]S33:将W和0x3C做与运算,如果结果不等于零按照第一种格式解压缩,如果结果等于零按照第二种格式解压缩,并跳转S35。
[0023]S34:W和0x78做与运算,如果结果不等于零按照第三种格式解压缩,如果结果等于零按照第四种格式解压缩,并跳转S35。
[0024]S35:判断数据是否处理完成,没有完成跳转第一步继续循环执行,已经处理完成跳转S36。
[0025]S36:判断整个文件解压缩完成,若是则输出最终结果。
[0026]本专利技术具有以下有益效果:
[0027]1)有效提高解压速度,相比于LZO算法,在几乎不影响压缩率的情况下,解压速度提高16%。
[0028]2)通过解压模块的安全检查,能够很好地处理数据溢出的问题。
[0029]3)完成了面向快速解压应用的无损压缩算法的软件开发,由于其轻量化的设计,完成了包括在Windows平台上的软件开发及在DSP平台上的软件移植。
附图说明
[0030]图1为本专利技术面向快速解压应用的轻量级无损压缩方法流程示意图。
[0031]图2为本专利技术词典编码示意图。
[0032]图3为本专利技术压缩格式示意图,其中a为第一压缩存储格式,b为第二压缩存储格式,c为第三压缩存储格式,d为第四压缩存储格式。
[0033]图4为本专利技术解压流程示意图。
具体实施方式
[0034]下面对本专利技术的具体实施方式进行描述,以便于本
的技术人员理解本专利技术,但应该清楚,本专利技术不限于具体实施方式的范围,对本
的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本专利技术的精神和范围内,这些变化是显而易见的,一切利用本专利技术构思的专利技术创造均在保护之列。
[0035]一种面向快速解压应用的轻量级无损压缩方法,如图1所示,包括如下步骤:
[0036]S1、利用两倍大小的LZ0算法词典进行两次匹配查找,同时对匹配成功的词典页进行更新;
[0037]如图2所示,新设计的压缩算法采用两次匹配的方式来进行匹配查找,匹配词典总共有两页,如果第一次匹配失败不再进行第二次哈希运算,依然采用第一次匹配时哈希值作为索引直接在第二页词典中继续查询是否有匹配项。如果两次匹配不成功,就把当前的数据当作新字符不做压缩直接输出。如果两次匹配都成功,则使用匹配长度较长的那个匹配信息做压缩处理。同时对词典项较旧的那页进行更新。
[0038]新设计的压缩算法的词典大小是LZO算法词典大小的两倍,这样的设计虽然会降低压缩过程的速度,但是却可以提高字符串匹配环节的成功率。这种设计使得词典灵活而又有弹性。当有其他压缩需求时,只需要通过增加或减少词典的页面的方式就可以灵活的调整词典大小,以达到不同的压缩性能。
[0039]S2、对匹配成功的距离和匹配长度信息,按照存储距离不同分别进行压缩存储;
[0040]如图3所示,为了更加达到更快速解压数据的目的,新设计的压缩算法对匹配成功的距离和匹配长度信息按照距离不同分为两类来进行压缩存储,第一类存储格式用于存储距离小于2K字节的匹配信息,第二类存储格式用于存储距离大于等于2K字节的匹配信息。
[0041]当距离小于2K字节时,算法设计了两种压缩格式来存储匹配成功后的距离和匹配长度信息。第一种格式用于表示匹配长度小于18字节时的压缩格式,此时匹配长度采用减2表示方法,距离用11本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向快速解压应用的轻量级无损压缩方法,其特征在于,包括如下步骤:S1、利用两倍大小的LZ0算法词典进行两次匹配查找,同时对匹配成功的词典页进行更新;S2、对匹配成功的距离和匹配长度信息,按照存储距离不同分别进行压缩存储;S3、对压缩存储之后的文件通过编码的第一个字节对编码类型进行判断,根据编码结果恢复匹配长度和距离;S4、采用边界检测方法对每次存储空间进行写操作时的安全检查,判断解压是否发生数据溢出。2.根据权利要求1所述的一种面向快速解压应用的轻量级无损压缩方法,其特征在于,所述S1中两次匹配查找的方式为:S11、依次利用匹配字典的两页进行个匹配,并判断匹配结果;S12、若第一次匹配失败则不再进行第二次哈希运算,直接采用第一次匹配时哈希值作为索引在第二页词典中继续查询是否有匹配项;S13、若两次匹配均不成功,则把当前数据作为新字符不做压缩直接输出;S14、若两次匹配均成功,则使用匹配长度较长的匹配信息进行压缩处理,同时对词典页进行更新。3.根据权利要求1所述的一种面向快速解压应用的轻量级无损压缩方法,其特征在于,所述S2中当存储距离小于2K字节的匹配信息时,采用第一类存储格式进行压缩存储;当存储距离大于或等于2K字节的匹配信息时,采用第二类存储格式进行压缩存储。4.根据权利要求3所述的一种面向快速解压应用的轻量级无损压缩方法,其特征在于,所述第一类存储格式包括第一压缩存储格式和第二压缩存储格式,其中,所述第一压缩存储格式用于表示识匹配长度小于1...

【专利技术属性】
技术研发人员:肖卓凌王天越彭卓霖陈智麒
申请(专利权)人:电子科技大学
类型:发明
国别省市:

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

1