CN115037309A - 一种lz77压缩算法的压缩参数分析计算方法和系统 - Google Patents
一种lz77压缩算法的压缩参数分析计算方法和系统 Download PDFInfo
- Publication number
- CN115037309A CN115037309A CN202210677102.1A CN202210677102A CN115037309A CN 115037309 A CN115037309 A CN 115037309A CN 202210677102 A CN202210677102 A CN 202210677102A CN 115037309 A CN115037309 A CN 115037309A
- Authority
- CN
- China
- Prior art keywords
- data stream
- code
- data
- compressed data
- distance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/3084—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
- H03M7/3086—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing a sliding window, e.g. LZ77
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明给出了一种LZ77压缩算法的压缩参数分析计算方法和系统,包括判断压缩数据流的LZ77码采用的是标志位法或转义码法;对于标志位法,利用获取的标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,确定距离码占用的比特位数为L;对于转义码法,分析出距离为K的距离码及拓展码;响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。该方法根据枚举并计算出LZ77压缩参数,从而实现数据解压缩,解决了黑盒压缩器无法的解压缩的问题,在数据分析的应用上具有重大创新性和实际意义。
Description
技术领域
本发明涉及计算机数据恢复及数据取证领域,尤其是一种LZ77压缩算法的压缩参数分析计算方法和系统。
背景技术
LZ77压缩算法是由Jacob Ziv和Abraham Lempel在1977年提出的一种通用无损压缩算法。经常被改造应用于各类压缩器。比如压缩软件、数据处理器、文件系统、数据流处理器、嵌入式设备、硬盘等等。但是在取证分析时候获取到的经常只有数据和一个LZ77的黑盒压缩器,没有压缩参数。市面上只有ZIP、7ZIP等压缩软件可以对已知压缩参数的压缩数据进行解压缩,对于定制类压缩器并没有对应软件能对数据进行解压缩。
现在市面上还没有发现软件能够自行计算压缩数据地压缩参数。采用LZ77通用压缩算法再自定义编码格式地压缩数据,如果没有对应的解压器,便无法正确解压数据。
发明内容
为了解决现有技术中还没有发现软件能够自行计算压缩数据地压缩参数,采用LZ77通用压缩算法再自定义编码格式地压缩数据,如果没有对应的解压器,便无法正确解压数据等技术问题,本发明提出了一种LZ77压缩算法的压缩参数分析计算方法和系统,以解决上述技术问题。
根据本发明的第一方面,提出了一种LZ77压缩算法的压缩参数分析计算方法,包括:
S100:判断压缩数据流的LZ77码采用的是标志位法或转义码法;
S200:对于标志位法:
S201:生成4K全0数据的数据流并将数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从压缩数据流中取出第一个比特,第一个比特为字符码的标志位B;
S202:从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;
S203:响应于压缩数据流S小于64M,设定距离码占用的比特位数位D,从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,利用标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,响应于数据流O与压缩数据流Q一致,则确定距离码占用的比特位数为L;
S300:对于转义码法:
S301:将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;
S302:根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;
S303:响应于压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;
S304:响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
根据权利要求1的LZ77压缩算法的压缩参数分析计算方法,采用标志位法的压缩数据流,一个LZ77码前面第一个比特是标志位;采用转义码法的压缩数据流,字符码、距离码、长度码都被转义成LZ77码。
在一些具体的实施例中,若压缩后的数据第一个字节均与未压缩数据的第一个字节相同,则确定LZ77码采用的是转义码法。
在一些具体的实施例中,步骤S202中D为22,步骤S203中响应于压缩数据流S大于64M,将D设定为D-1,判断D是否大于2,若是则重复进行步骤S202。
在一些具体的实施例中,步骤S203中响应于数据流O与压缩数据流Q不一致,将L设定为L-1,判断L是否大于1,若是,则重复步骤S203。
在一些具体的实施例中,步骤S303中响应于压缩数据流S不小于于(64M/8)*H,将D设定为D–1,判断D是否大于2,若是,则重复步骤S302。
在一些具体的实施例中,步骤S303中的K为4,步骤S304中若K≤L,则将K设定为K+1,重复步骤S303。
根据本发明的第二方面,提出了一种计算机可读存储介质,其上存储有一或多个计算机程序,该一或多个计算机程序被计算机处理器执行时实施上述任一项的方法。
根据本发明的第三方面,提出了一种LZ77压缩算法的压缩参数分析计算系统,系统包括:
判断单元:配置用于判断压缩数据流的LZ77码采用的是标志位法或转义码法;
标志位法的压缩参数计算单元:配置用于生成4K全0数据的数据流并将数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从压缩数据流中取出第一个比特,第一个比特为字符码的标志位B;从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于64M,设定距离码占用的比特位数位D,从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,利用标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,响应于数据流O与压缩数据流Q一致,则确定距离码占用的比特位数为L;
转义码法的压缩参数计算单元:配置用于将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
在一些具体的实施例中,采用标志位法的压缩数据流,一个LZ77码前面第一个比特是标志位;采用转义码法的压缩数据流,字符码、距离码、长度码都被转义成LZ77码,若压缩后的数据第一个字节均与未压缩数据的第一个字节相同,则确定LZ77码采用的是转义码法。
在一些具体的实施例中,标志位法的压缩参数计算单元中D为22,响应于压缩数据流S大于64M,将D设定为D-1,判断D是否大于2,若是则重复进行从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S。
在一些具体的实施例中,标志位法的压缩参数计算单元中响应于数据流O与压缩数据流Q不一致,将L设定为L-1,判断L是否大于1,若是,则重复从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O的操作。
在一些具体的实施例中,转义码法的压缩参数计算单元中响应于压缩数据流S不小于于(64M/8)*H,将D设定为D–1,判断D是否大于2,若是,则重复从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S。
在一些具体的实施例中,转义码法的压缩参数计算单元中若K≤L,则将K设定为K+1,重复从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O的操作。
本发明提出了一种LZ77压缩算法的压缩参数分析计算方法和系统,通过枚举全字符分析计算LZ77压缩算法压缩参数的方法和装置。该方法利用LZ77压缩算法的第一个字节无法压缩的特性,通过枚举一系列不可压缩数据后计算出LZ77的压缩参数。该方法根据枚举并计算出LZ77压缩参数,从而实现数据解压缩,解决了黑盒压缩器无法的解压缩的问题,在数据分析的应用上具有重大创新性和实际意义。
附图说明
包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请的一个实施例的一种LZ77压缩算法的压缩参数分析计算方法的流程图;
图2是本申请的一个具体的实施例的标志位法LZ77码的压缩参数计算方法流程图;
图3是本申请的一个具体的实施例的转义码法LZ77码的压缩参数计算方法流程图;
图4是本申请的一个实施例的一种LZ77压缩算法的压缩参数分析计算系统的框架图;
图5是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
LZ77是通过查找序列中字符重复出现的次数,从而实现压缩的。以数据自身作为字典,通过设定滑动窗口的长度,在滑动窗口长度范围内向前查找查复出现的字符,然后采用重复出现字符位置和长度替换原字符,从而实现压缩。例如:
Blah blah blah blah blah!
通过往前查找,‘B’,‘l’,‘a’,‘h’,‘’‘b’往前查找没有查找到相同,再往下查找就可以匹配到最长的一组字符串”lahb”会反复出现,因此压缩后的数据就会变成:
Blah b[D=5,L=5]
再继续往后不断查找,就可以实现数据的压缩。
通过上述例子可以直到压缩器内部会将数据流区分为[字符码,距离码,长度码]。为了方便描述,我们在下文中将[字符码,距离码,长度码]成为LZ77编码。其中字符码是无法压缩的字符,距离码和长度码配合表示重复出现的字符。第一个字节往前查找不到相同且重复的字符,因此LZ77压缩算法的第一个字节无法压缩的,两个字节的压缩也无法做到节省空间,通常认为前三个字符都是不可压缩的。并且一个没有不重复的字符串也是无法压缩的。
如果想要对LZ77压缩的数据进行解压缩,只需要区分LZ77编码就可以了。并且长度码和距离码是放在一起的,压缩参数的计算需要先区分出是字符码还是[距离码+长度码],如果是[距离码+长度码],再去区分距离码及长度码。
常规地,[距离码+长度码]不会超过3个字节,因此长度码通常小于256。在压缩数据流中,用于区分[字符码]和[距离码+长度码]地方法由两种,一种是采用标志位的方法(以下称为标志位法),另一种对[距离码+长度码]另外编码(以下称为转义码法)。
采用标志位法地压缩数据流,一个LZ77码前面第一个比特是标志位,这种方法压缩参数比较好确定。只需要知道标志位、距离码占用比特位数、长度码占用比特位数就可以。
采用转义码法的压缩数据流,字符码、距离码、长度码都被转义称LZ77码。而距离码需要做稀疏处理,先将距离码分割为距离码和拓展码。在常规的解压过程中需要先确定一个LZ77码是否为距离码,如果是距离码后紧跟着为距离码的拓展码和长度码。解压缩转义码法的压缩数据流需要先知道一个LZ77编码占用的比特位数,滑动窗口大小,长度码占用的比特位数。先确定出滑动窗口长度,再枚举出各个距离码的转义码。
生成4K全0的数据流,并分别将第一个字符修改成0x00~0xFF后送入LZ77压缩器。如果压缩后的数据第一个字节均与未压缩数据的第一个字节相同,则确定LZ77码采用的是转义码法。
标志位法LZ77码的参数计算方法如下:
生成4K全0的数据流,将第一个字符修改成0x01后将数据注入LZ77黑盒压缩器,通过与未压缩数据对比,分析出标志位‘0’代表字符码还是‘1’代表字符码。获取标志位后就可以区分[字符码]与[距离码+长度码]。
从n=22到n=2分别生成2n个字节的不可压缩数据,将这些不可压缩数据记住为N指数字节不可压缩数据,并每种N指数字节不可压缩数据连续复制64M大小,然后分别将这64M数据注入LZ77黑盒压缩器,若N指数字节不可压缩数据压缩后的数据流长度小于64M,且(N+1)指数字节不可压缩数据压缩后数据流长度大于64M,则距离码占用的比特位为N。
从m=4、8、16到256分别生成m个字节的不可压缩数据,将这些不可压缩数据记住为M字节不可压缩数据,并每种M字节不可压缩数据连续复制64组,然后分别将这64组数据注入LZ77黑盒压缩器获取到压缩数据,尝试将长度码占用比特位为设定为M进行解压数据,若M字节不可压缩数据成功解压,且(2M)字节不可压缩数据解压错误,则长度码的最大值为M。
转义码法LZ77码的参数计算方法如下:
先将0x01~0xFF注入LZ77黑盒压缩器,与元数据对比,获取全字符码的转义,并计算出一个LZ77码占用的比特位数,记为S。
从n=22到n=2分别生成2n个字节的不可压缩数据,将这些不可压缩数据记住为N指数字节不可压缩数据,并每种N指数字节不可压缩数据连续复制成64M大小,然后分别将这64M数据注入LZ77黑盒压缩器,若N指数字节不可压缩数据压缩后的数据流长度小于(64M/8)*S,且(N+1)指数字节不可压缩数据压缩后数据流长度大于(64M/8)*S。此时可以确定滑动窗口的大小为2^n,记住为L。
从K=4到L分别生成K字节不可压缩数据,将这些不可压缩数据记住为K字节不可压缩数据,并每种K字节不可压缩数据连续复制64组,然后分别将这64组数据注入LZ77黑盒压缩器获取到压缩数据,此时可以分析出从4到L距离的距离转义码及拓展码,并可以知道每个转义码对应拓展码占用的比特位数。
生成距离为1~4的特殊可压缩数据注入LZ77黑盒压缩器获取到压缩数据,就可以计算出距离为1~4距离的距离转义码及拓展码。
根据本申请的一个实施例的一种LZ77压缩算法的压缩参数分析计算方法,图1示出了根据本申请的实施例的一种LZ77压缩算法的压缩参数分析计算方法的流程图。如图1所示,该方法包括:
S100:判断压缩数据流的LZ77码采用的是标志位法或转义码法;
S200:对于标志位法:
S201:生成4K全0数据的数据流并将数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从压缩数据流中取出第一个比特,第一个比特为字符码的标志位B;
S202:从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;
S203:响应于压缩数据流S小于64M,设定距离码占用的比特位数位D,从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,利用标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,响应于数据流O与压缩数据流Q一致,则确定距离码占用的比特位数为L;
S300:对于转义码法:
S301:将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;
S302:根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;
S303:响应于压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;
S304:响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
在具体的实施例中,图2示出了根据本申请的一个具体的实施例的标志位法LZ77码的压缩参数计算方法流程图,如图2所示,该算法的具体步骤包括:
1.生成4K全0数据的数据流并将数据流第一个字节修改成0x01,将数据流注入LZ77黑盒压缩器获得压缩数据流。从压缩数据流中取出第一个比特,记为B。则B为字符码的标志位。
2.记D为22。
3.从集合U中取出2D个字节的不可压缩数据,并将复制成64M数据流,将数据流注入LZ77黑盒压缩器获得压缩数据流S。判断S是否小于64M。若是,设定距离码占用的比特位数位D,则跳转步骤5;若否,则继续步骤4。
4.将D设定为D-1,判断D是否大于2。若是,则跳转步骤3;若否,则LZ77压缩参数计算错误流程结束。
5.记L为8。
6.从集合U中取出2L个字节的不可压缩数据,并将复制64组做成数据流O,将数据流O注入LZ77黑盒压缩器获得压缩数据流S。设定LZ77码的字符码标志位为B、距离码占用比特位数位D、长度码占用的比特位数位L,然后使用这组参数对数据流S进行解压缩获取解压缩数据流Q,比较数据流O与数据流Q是否一致。若是,设定距离码占用的比特位数位L,LZ77压缩参数计算完成;若否,则继续步骤7。
7.将L设定为L-1,判断L是否大于1。若是,则跳转步骤6;若否,则LZ77压缩参数计算错误流程结束。
8.至此流程结束。
在具体的实施例中,图3示出了根据本申请的一个具体的实施例的转义码法LZ77码的压缩参数计算方法流程图,如图3所示,该算法的具体步骤包括:
1.将0x00~0xFF制作成数据流并注入LZ77黑盒压缩器获得压缩数据流S,计算压缩数据流S的长度Len。
2.H=Len/256,T=Len%256。判断T是否为0,若是,则继续步骤3;若否,则LZ77压缩参数计算错误流程结束。
3.一次取出H个比特位,连续获取256次。即可获取全字符的转义码。
4.记D为22。
5.从集合U中取出2D个字节的不可压缩数据,并将复制成64M数据流,将数据流注入LZ77黑盒压缩器获得压缩数据流S。判断S是否小于(64M/8)*H。若是,设定滑动窗口的大小为2D,记为L;则跳转步骤7;若否,则继续步骤6。
6.将D设定为D-1,判断D是否大于2。若是,则跳转步骤5;若否,则LZ77压缩参数计算错误流程结束。
7.记K为4。
8.从集合U中取出K个字节的不可压缩数据,并将复制64组做成数据流O,将数据流O注入LZ77黑盒压缩器获得压缩数据流S。从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码。
9.将K设定为K+1,判断L是否大于L。若否,则跳转步骤8;若是,则继续步骤10。
10.生成距离为1~4的特殊可压缩数据注入LZ77黑盒压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
11.至此流程结束。
LZ77作为目前全世界使用最为广泛的压缩算法,几乎所有的压缩算法都是基于LZ77进行的编码实现的,对LZ77黑盒压缩器的参数计算成为取证及数据恢复领域的一项重要需求。本文提出了一种LZ77压缩算法的压缩参数分析计算方法和装置,该方法根据枚举并计算出LZ77压缩参数,从而实现数据解压缩,解决了黑盒压缩器无法的解压缩的问题,在数据分析的应用上具有重大创新性和实际意义。
继续参考图4,图4示出了根据本申请的实施例的一种LZ77压缩算法的压缩参数分析计算系统的框架图。该系统具体包括判断单元401、标志位法的压缩参数计算单元402和转义码法的压缩参数计算单元403。其中,判断单元401配置用于判断压缩数据流的LZ77码采用的是标志位法或转义码法;标志位法的压缩参数计算单元402配置用于生成4K全0数据的数据流并将数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从压缩数据流中取出第一个比特,第一个比特为字符码的标志位B;从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于64M,设定距离码占用的比特位数位D,从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,利用标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,响应于数据流O与压缩数据流Q一致,则确定距离码占用的比特位数为L;转义码法的压缩参数计算单元403配置用于将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
下面参考图5,其示出了适于用来实现本申请实施例的电子设备的计算机系统500的结构示意图。图5示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,计算机系统500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有系统500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Sma l lta l k、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。
作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:判断压缩数据流的LZ77码采用的是标志位法或转义码法;对于标志位法:生成4K全0数据的数据流并将数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从压缩数据流中取出第一个比特,第一个比特为字符码的标志位B;从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于64M,设定距离码占用的比特位数位D,从集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,利用标志位B、距离码占用的比特位数位D、长度码占用的比特位数位L对数据流S进行解压缩获取压缩数据流Q,响应于数据流O与压缩数据流Q一致,则确定距离码占用的比特位数为L;对于转义码法:将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将数据流注入LZ77压缩器获得压缩数据流S;响应于压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (14)
1.一种LZ77压缩算法的压缩参数分析计算方法,其特征在于,包括:
S100:判断压缩数据流的LZ77码采用的是标志位法或转义码法;
S200:对于标志位法:
S201:生成4K全0数据的数据流并将所述数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从所述压缩数据流中取出第一个比特,所述第一个比特为字符码的标志位B;
S202:从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S;
S203:响应于所述压缩数据流S小于64M,设定距离码占用的比特位数位D,从所述集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将所述数据流O注入所述LZ77压缩器获得压缩数据流S,利用所述标志位B、所述距离码占用的比特位数位D、长度码占用的比特位数位L对所述数据流S进行解压缩获取压缩数据流Q,响应于所述数据流O与所述压缩数据流Q一致,则确定距离码占用的比特位数为L;
S300:对于转义码法:
S301:将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;
S302:根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S;
S303:响应于所述压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从所述集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将所述数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;
S304:响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
2.根据权利要求1所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,采用所述标志位法的压缩数据流,一个所述LZ77码前面第一个比特是标志位;采用转义码法的压缩数据流,字符码、距离码、长度码都被转义成LZ77码。
3.根据权利要求2所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,若压缩后的数据第一个字节均与未压缩数据的第一个字节相同,则确定所述LZ77码采用的是转义码法。
4.根据权利要求1所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,步骤S202中D为22,步骤S203中响应于所述压缩数据流S大于64M,将D设定为D-1,判断D是否大于2,若是则重复进行步骤S202。
5.根据权利要求1所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,步骤S203中响应于所述数据流O与所述压缩数据流Q不一致,将L设定为L-1,判断L是否大于1,若是,则重复步骤S203。
6.根据权利要求1所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,步骤S303中响应于所述压缩数据流S不小于于(64M/8)*H,将D设定为D–1,判断D是否大于2,若是,则重复步骤S302。
7.根据权利要求1所述的LZ77压缩算法的压缩参数分析计算方法,其特征在于,步骤S303中的K为4,步骤S304中若K≤L,则将K设定为K+1,重复步骤S303。
8.一种计算机可读存储介质,其上存储有一或多个计算机程序,其特征在于,该一或多个计算机程序被计算机处理器执行时实施权利要求1至7中任一项所述的方法。
9.一种LZ77压缩算法的压缩参数分析计算系统,其特征在于,所述系统包括:
判断单元:配置用于判断压缩数据流的LZ77码采用的是标志位法或转义码法;
标志位法的压缩参数计算单元:配置用于生成4K全0数据的数据流并将所述数据流的第一个字节修改成0x01,将数据流注入LZ77压缩器获得压缩数据流;从所述压缩数据流中取出第一个比特,所述第一个比特为字符码的标志位B;从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S;响应于所述压缩数据流S小于64M,设定距离码占用的比特位数位D,从所述集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O,将所述数据流O注入所述LZ77压缩器获得压缩数据流S,利用所述标志位B、所述距离码占用的比特位数位D、长度码占用的比特位数位L对所述数据流S进行解压缩获取压缩数据流Q,响应于所述数据流O与所述压缩数据流Q一致,则确定距离码占用的比特位数为L;
转义码法的压缩参数计算单元:配置用于将0x00~0xFF制作成数据流并注入LZ77黑压缩器获得压缩数据流S,计算压缩数据流S的长度Len;根据H=Len/256,T=Len%256,响应于T为0,一次性取出H个比特位,连续获取256次,从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S;响应于所述压缩数据流S小于(64M/8)*H,设定滑动窗口的大小L为2D,从所述集合U中取出K个字节的不可压缩数据,并复制成64组数据流O,将所述数据流O注入LZ77压缩器获得压缩数据流S,从数据流S中取出数据为距离码的LZ77码,并分析出距离为K的距离码及拓展码;响应于K>L,生成距离为1~4的特殊可压缩数据注入LZ77压缩器获取到压缩数据,计算出距离为1~4距离的距离转义码及拓展码。
10.根据权利要求9所述的LZ77压缩算法的压缩参数分析计算系统,其特征在于,采用所述标志位法的压缩数据流,一个所述LZ77码前面第一个比特是标志位;采用转义码法的压缩数据流,字符码、距离码、长度码都被转义成LZ77码,若压缩后的数据第一个字节均与未压缩数据的第一个字节相同,则确定所述LZ77码采用的是转义码法。
11.根据权利要求9所述的LZ77压缩算法的压缩参数分析计算系统,其特征在于,所述标志位法的压缩参数计算单元中D为22,响应于所述压缩数据流S大于64M,将D设定为D-1,判断D是否大于2,若是则重复进行从不可压缩数据的集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S。
12.根据权利要求9所述的LZ77压缩算法的压缩参数分析计算系统,其特征在于,所述标志位法的压缩参数计算单元中响应于所述数据流O与所述压缩数据流Q不一致,将L设定为L-1,判断L是否大于1,若是,则重复从所述集合U中取出2L个字节的不可压缩数据,并复制成64组数据流O的操作。
13.根据权利要求9所述的LZ77压缩算法的压缩参数分析计算系统,其特征在于,所述转义码法的压缩参数计算单元中响应于所述压缩数据流S不小于于(64M/8)*H,将D设定为D–1,判断D是否大于2,若是,则重复从集合U中取出2D个字节的不可压缩数据,并复制成64M的数据流,将所述数据流注入所述LZ77压缩器获得压缩数据流S。
14.根据权利要求9所述的LZ77压缩算法的压缩参数分析计算系统,其特征在于,所述转义码法的压缩参数计算单元中若K≤L,则将K设定为K+1,重复从所述集合U中取出K个字节的不可压缩数据,并复制成64组数据流O的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210677102.1A CN115037309A (zh) | 2022-06-15 | 2022-06-15 | 一种lz77压缩算法的压缩参数分析计算方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210677102.1A CN115037309A (zh) | 2022-06-15 | 2022-06-15 | 一种lz77压缩算法的压缩参数分析计算方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115037309A true CN115037309A (zh) | 2022-09-09 |
Family
ID=83125032
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210677102.1A Pending CN115037309A (zh) | 2022-06-15 | 2022-06-15 | 一种lz77压缩算法的压缩参数分析计算方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115037309A (zh) |
-
2022
- 2022-06-15 CN CN202210677102.1A patent/CN115037309A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7079051B2 (en) | In-place differential compression | |
US7623047B2 (en) | Data sequence compression | |
EP2487798B1 (en) | Information compression-coding device, its decoding device, method thereof, program thereof and recording medium storing the program | |
JP3009727B2 (ja) | 改良形データ圧縮装置 | |
US8704685B2 (en) | Encoding method, encoding apparatus, decoding method, decoding apparatus, and system | |
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
US9337863B1 (en) | Methods and apparatus for rational compression and decompression of numbers | |
CN110021369B (zh) | 基因测序数据压缩解压方法、系统及计算机可读介质 | |
US10133551B1 (en) | Content-aware compression of data using multiple parallel prediction functions | |
US10911066B2 (en) | Method and system of content based dynamic data compression | |
US20140289208A1 (en) | Data compression apparatus, data compression method, data decompression apparatus, and data decompression method | |
CN104811209A (zh) | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 | |
Al-Bahadili | A novel lossless data compression scheme based on the error correcting Hamming codes | |
US20150280739A1 (en) | Variable Bit-Length Reiterative Lossless Compression System and Method | |
US8018359B2 (en) | Conversion of bit lengths into codes | |
CN115037309A (zh) | 一种lz77压缩算法的压缩参数分析计算方法和系统 | |
US8638243B2 (en) | Data compression device, data compression method, and medium | |
JP2536422B2 (ja) | デ―タ圧縮装置及びデ―タ復元装置 | |
KR101890365B1 (ko) | 압축된 데이터의 오류를 검출하는 방법 및 장치 | |
US9348535B1 (en) | Compression format designed for a very fast decompressor | |
WO2019074744A1 (en) | METHOD AND SYSTEM FOR PREDICTING BITS USING A STATISTICAL MODEL | |
Park et al. | Recovery of damaged compressed files for digital forensic purposes | |
KR101705461B1 (ko) | 문자열 압축 및 해제를 위한 방법 및 장치 | |
US20090212981A1 (en) | Bidirectional context model for adaptive compression | |
US11967975B1 (en) | Method and apparatus for recursive data compression using seed bits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |