本发明专利技术公开了一种哈夫曼解码方法及其装置,包括从待解码比特流上依次读取若干组二进制码组;每组二进制码组内包含的二进制码个数大于1;分别依次对每组二进制码组进行哈夫曼解码,得到待解码比特流上的二进制码对应的解码结果,解码结果包括解码字符和解码长度,解码长度为解码字符在预设的哈夫曼码表内对应的二进制码的位数;读取解码位置对应的解码字符后,将解码位置按照自身对应的解码长度依次后移相应的位数,并将后移后对应的位置作为解码位置,重复操作;直至解码完成,初始解码位置为待解码比特流的起始二进制码。本发明专利技术以组为单位读取多位二进制码进行解码,解码效率高。且读取过程与解码过程互不干涉,解码的速度快。
【技术实现步骤摘要】
一种哈夫曼解码方法及其装置
本专利技术涉及编解码
,特别是涉及一种哈夫曼解码方法及其装置。
技术介绍
当前,随着互联网、物联网的飞速发展,数据文件规模越来越大。为节省存储成本,各数据中心均对数据进行压缩出来。大量的数据压缩占用较高的CPU资源,不仅降低了服务器性能,而且提升了服务器功耗,增加了能源成本。目前,数据压缩中常采用哈夫曼解码方法。哈夫曼(Huffman)编码是一种一致性编码法(又称“熵编码法”),用于数据的无损耗压缩。它根据每一个字符出现的概率建立起来编码表,出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,使得编码后的字符串的平均期望长度降低,从而达到无损压缩数据的目的。由于哈夫曼编码是一种变长编码,各字符编码长度不定,故哈夫曼解码时只能串行执行,不能够预先将待解码比特流预先分为特定长度的二进制码串再进行处理,且在解码过程中,是先读取一位二进制码,与哈夫曼码表比较后,再读取下一位二进制码,直至与哈夫曼码表匹配成功,效率低,解码速度慢。因此,如何提供一种效率高的哈夫曼解码方法及其装置是本领域技术人员目前需要解决的问题。
技术实现思路
本专利技术的目的是提供一种哈夫曼解码方法及其装置,以组为单位读取多位二进制码进行解码,解码效率高;且读取过程与解码过程互不干涉,能够实现流水作业,哈夫曼解码的速度快。为解决上述技术问题,本专利技术提供了一种哈夫曼解码方法,包括:步骤s1:从待解码比特流上依次读取若干组二进制码组;每组所述二进制码组内包含的二进制码个数大于1;步骤s2:分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的位数;步骤s3:读取所述解码位置对应的解码字符,将所述解码位置按照自身对应的解码长度依次后移相应的位数,并将后移后对应的位置作为解码位置,重复步骤s3;直至解码完成;其中,初始解码位置为所述待解码比特流的起始二进制码。优选地,步骤s1的过程具体为:从所述待解码比特流上的读取起始位置开始,依次读取L位二进制码,得到二进制码组;L≥m+n-1;m为解码器的个数,n为所述哈夫曼码表的最长编码长度;令所述读取起始位置后移m位,作为新的读取起始位置,重复读取操作;相应的,步骤s2的过程具体为:m个所述解码器分别依次对每组所述二进制码组进行哈夫曼解码;其中,第i个所述解码器自所述二进制码组的第i位开始进行哈夫曼解码,得到所述二进制码组的第i位处的解码结果;1≤i≤m且i为正整数。优选地,步骤s1的过程具体为:分别将所述待解码比特流上的每一位二进制码作为读取起始位置依次读取n位二进制码,得到若干组二进制码组。优选地,步骤s2的过程具体为:分别从每位所述二进制码组的首位二进制码开始进行哈夫曼解码,得到所述二进制码组的首位二进制码对应的解码结果。优选地,所述哈夫曼码表为范式哈夫曼码表,步骤s2的过程具体为:对不足n位的二进制码组右侧补零,扩充为n位二进制码组;将所述哈夫曼码表内每个字符对应的编码右侧补零,扩充为n位编码;计算每个扩充后编码的数值,并分别记录原始编码长度相同的若干个编码的编码数值中的最小值,得到k个最小值作为阈值,k≤n;计算每组所述二进制码组的数值D;将D分别按照从小到大的顺序与k个所述阈值进行比较,若D小于当前比较的阈值,则记录比较结果为0,反之,记录比较结果为1,并将比较结果按照比较顺序的先后从左至右进行排序,得到k位掩码;若k<n,则按照预设规则调整为n位掩码;令所述二进制码组与所述n位掩码按位进行与操作,得到n位结果码,计算所述n位结果码的数值I;依据I得到所述二进制码组的首位二进制码对应的解码结果。优选地,所述解码结果还包括有效标识符,当得到解码字符后,所述解码结果对应的有效标识符为真,反之,为假。为解决上述技术问题,本专利技术还提供了一种哈夫曼解码装置,包括:读取模块,用于从待解码比特流上依次读取若干组二进制码组;每组所述二进制码组内包含的二进制码个数大于1;解码模块,用于分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的位数;合并模块,用于读取所述解码位置对应的解码字符后,将所述解码位置按照自身对应的解码长度依次后移相应的位数,并将后移后对应的位置作为解码位置,重复自身操作;直至解码完成;其中,初始解码位置为所述待解码比特流的起始二进制码。优选地,所述解码模块包括m个解码器;所述读取模块具体用于:从所述待解码比特流上的读取起始位置开始,依次读取L位二进制码,得到二进制码组;L≥m+n-1;m为解码器的个数,n为所述哈夫曼码表的最长编码长度;令所述读取起始位置后移m位,作为新的读取起始位置,重复读取操作;m个所述解码器,用于分别依次对每组所述二进制码组进行哈夫曼解码;其中,第i个所述解码器自所述二进制码组的第i位开始进行哈夫曼解码,得到所述二进制码组的第i位处的解码结果;1≤i≤m且i为正整数;当m个所述解码器完成对一组所述二进制码组的解码后,将得到的一组二进制码发送至所述合并模块进行处理。优选地,所述读取模块具体用于:分别将所述待解码比特流上的每一位二进制码作为读取起始位置依次读取m位二进制码,得到若干组二进制码组。本专利技术提供了一种哈夫曼解码方法及其装置,每次从待解码比特流上读取一组二进制码组,然后分别对读取到的各组二进制码组进行哈夫曼解码,得到待解码比特流上的二进制码对应的解码结果,进而得到解码字符。可见,本专利技术不是每次读取一位二进制码,而是并行读取多位二进制码作为一组进行解码,大大提高了哈夫曼解码的速度,解码效率高。并且,本专利技术的读取过程时从待解码比特流上依次读取二进制码组,即每读取完一组后即继续读取下一组;而解码过程中是分别依次对各组二进制码组进行解码,然后根据解码结果进行合并操作,得到最终解码结果。可见,本专利技术实现了流水作业,读取过程与解码过程互不干涉,可以同时并列进行,相比目前仅能解码完成后再进行下一次读取的串行操作,本专利技术的解码速度大大提高。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术提供的一种哈夫曼解码方法的过程的流程图;图2为本专利技术提供的另一种哈夫曼解码方法的过程的流程图;图3为本专利技术提供的另一种哈夫曼解码方法的过程的流程图;图4为本专利技术提供的一种哈夫曼解码装置的结构示意图。具体实施方式本专利技术的核心是提供一种哈夫曼解码方法及其装置,以组为单位读取多位二进制码进行解码,解码效率高;且读取过程与解码过程互不干涉,能够实现流水作业,哈夫曼解码的速度快。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本文档来自技高网...
【技术保护点】
一种哈夫曼解码方法,其特征在于,包括:步骤s1:从待解码比特流上依次读取若干组二进制码组;每组所述二进制码组内包含的二进制码个数大于1;步骤s2:分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的位数;步骤s3:读取所述解码位置对应的解码字符,将所述解码位置按照自身对应的解码长度依次后移相应的位数,并将后移后对应的位置作为解码位置,重复步骤s3;直至解码完成;其中,初始解码位置为所述待解码比特流的起始二进制码。
【技术特征摘要】
1.一种哈夫曼解码方法,其特征在于,包括:步骤s1:从待解码比特流上依次读取若干组二进制码组;每组所述二进制码组内包含的二进制码个数大于1;步骤s2:分别依次对每组二进制码组进行哈夫曼解码,得到所述待解码比特流上的二进制码对应的解码结果,所述解码结果包括解码字符和解码长度,所述解码长度为所述解码字符在预设的哈夫曼码表内对应的二进制码的位数;步骤s3:读取所述解码位置对应的解码字符,将所述解码位置按照自身对应的解码长度依次后移相应的位数,并将后移后对应的位置作为解码位置,重复步骤s3;直至解码完成;其中,初始解码位置为所述待解码比特流的起始二进制码。2.根据权利要求1所述的方法,其特征在于,步骤s1的过程具体为:从所述待解码比特流上的读取起始位置开始,依次读取L位二进制码,得到二进制码组;L≥m+n-1;m为解码器的个数,n为所述哈夫曼码表的最长编码长度;令所述读取起始位置后移m位,作为新的读取起始位置,重复读取操作;相应的,步骤s2的过程具体为:m个所述解码器分别依次对每组所述二进制码组进行哈夫曼解码;其中,第i个所述解码器自所述二进制码组的第i位开始进行哈夫曼解码,得到所述二进制码组的第i位处的解码结果;1≤i≤m且i为正整数。3.根据权利要求1所述的方法,其特征在于,步骤s1的过程具体为:分别将所述待解码比特流上的每一位二进制码作为读取起始位置依次读取n位二进制码,得到若干组二进制码组。4.根据权利要求3所述的方法,其特征在于,步骤s2的过程具体为:分别从每位所述二进制码组的首位二进制码开始进行哈夫曼解码,得到所述二进制码组的首位二进制码对应的解码结果。5.根据权利要求3所述的方法,其特征在于,所述哈夫曼码表为范式哈夫曼码表,步骤s2的过程具体为:对不足n位的二进制码组右侧补零,扩充为n位二进制码组;将所述哈夫曼码表内每个字符对应的编码右侧补零,扩充为n位编码;计算每个扩充后编码的数值,并分别记录原始编码长度相同的若干个编码的编码数值中的最小值,得到k个最小值作为阈值,k≤n;计算每组所述二进制码组的数值D;将D分别按照从小到大的顺序与k个所述阈值进行比较,...
【专利技术属性】
技术研发人员:赵雅倩,李一韩,李磊,史宏志,
申请(专利权)人:郑州云海信息技术有限公司,
类型:发明
国别省市:河南,41
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。