CN103051341B - 数据编码装置及方法、数据解码装置及方法 - Google Patents
数据编码装置及方法、数据解码装置及方法 Download PDFInfo
- Publication number
- CN103051341B CN103051341B CN201210593681.8A CN201210593681A CN103051341B CN 103051341 B CN103051341 B CN 103051341B CN 201210593681 A CN201210593681 A CN 201210593681A CN 103051341 B CN103051341 B CN 103051341B
- Authority
- CN
- China
- Prior art keywords
- data
- coding
- encoded
- coding schedule
- schedule
- 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.)
- Expired - Fee Related
Links
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种数据编码装置及方法、数据解码装置及方法,涉及数据编解码技术领域。所述数据编码方法包括:将待编码数据中的部分数据确定为测验数据;采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表;采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。本发明的方法及装置能提高编码性能。
Description
技术领域
本发明涉及数据的编解码,特别是涉及一种能支持二个以上静态霍夫曼编码表的数据编码装置及方法和相应的数据解码装置及方法。
背景技术
GZIP(GNUZip的缩写)是一种文件压缩程序,最早由Jean-loupGailly和MarkAdler创建,用于UNIX系统的文件压缩。在Linux系统中经常会见到的后缀为.gz的文件,就是用GZIP格式压缩的。GZIP现今已成为在Internet上使用非常普遍的一种数据压缩格式,或者说文件格式。
GZIP在算法上通常使用霍夫曼(huffman)编码。采用霍夫曼编码压缩后的数据格式在RFC1951中有描述。霍夫曼编码是一种基于统计意义的熵编码,其以不同数据出现的概率作为编码基础。霍夫曼编码包括静态霍夫曼编码和动态霍夫曼编码两种。静态霍夫曼编码指的是数据出现的概率由事先统计的规律得出,其只有一种编码方式,具有计算量少、速度快、编码性能差等特点。动态霍夫曼编码指的是数据出现的概率由实际数据源得出,具有计算量大、处理时间长、速度慢、编码性能好等特点。
然而,现有的GZIP编码方法存在难以同时保证编码性能和编码速度的缺点。
发明内容
有鉴于此,本发明提供了一种能支持二个以上编码表的数据编码装置及方法和相应的数据解码装置及方法,以提高编码性能并保持编码速度。
第一方面,本发明实施例提供了一种数据编码方法,包括以下步骤:将待编码数据中的部分数据确定为测验数据;采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表;采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。
结合该第一方面,在第一种可能的实施方式中,所述将待编码数据中的部分数据确定为测验数据包括:随机选择所述待编码数据中的一个数据块作为所述测验数据。
结合该第一方面,在第二种可能的实施方式中,所述将待编码数据中的部分数据确定为测验数据包括:将所述待编码数据划分为二个以上数据块;将所述二个以上数据块中的N个数据块分别确定为所述测验数据,其中N为大于1的整数,所述采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表包括:采用所述二个以上编码表对每个数据块分别进行编码,获得所述N个数据块中每个数据块的最大压缩率;将生成所述最大压缩率次数最多的编码表确定为目标编码表。
结合该第一方面以及该第一方面的第一至二种可能的实施方式中的任一种,在第三种可能的实施方式中,所述二个以上编码表由数据压缩方和数据解压缩方协商确定。
结合该第一方面以及该第一方面的第一至三种可能的实施方式中的任一种,在第四种可能的实施方式中,所述二个以上编码表为静态霍夫曼编码格式的编码表。
结合该第一方面的第四种可能的实施方式,在第五种可能的实施方式中,采用所述目标编码表对所述待编码数据进行编码所获得的数据为GZIP格式,所述目标编码表信息是通过扩展所述数据的BTYPE字段记载的。
第二方面,本发明实施例提供了一种数据编码装置,包括:测验数据确定单元,用于将待编码数据中的部分数据确定为测验数据;编码表选择单元,与所述测验数据确定单元连接,用于比较对所述测验数据采用预定的二个以上编码表分别进行编码所获得的二个以上编码结果的压缩率,并选择获得最大压缩率的编码表作为目标编码表;编码单元,与所述测验数据确定单元以及所述编码表选择单元连接,用于采用所述二个以上编码表分别对所述测验数据进行编码;在所述编码表选择单元确定所述目标编码表后,采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。
结合该第二方面,在第一种可能的实施方式中,所述测验数据确定单元包括:选择模块,用以随机选择所述待编码数据中的一个数据块作为所述测验数据,所述编码表选择单元包括:压缩率比较模块,用于比较所述二个以上编码表对该数据块分别进行编码的结果,并将获得最大压缩率的编码表确定为所述目标编码表。
结合该第二方面,在第二种可能的实施方式中,所述测验数据确定单元包括:分块模块,用以将所述待编码数据划分为二个以上数据块;以及选择模块,用以将所述二个以上数据块中的N个数据块分别确定为所述测验数据,其中N为大于1的整数,所述编码表选择单元包括:压缩率比较模块,用于比较所述二个以上编码表对每个数据块分别进行编码的结果,获得所述N个数据块中每个数据块的最大压缩率;统计模块,将生成所述最大压缩率次数最多的编码表确定为所述目标编码表。
结合该第二方面以及该第二方面的第一至二种可能的实施方式中的任一种,在第三种可能的实施方式中,所述数据编码装置还包括存储单元,所述二个以上编码表由数据压缩方和数据解压缩方协商确定并存储于所述存储单元中。
结合该第二方面以及该第二方面的第一至三种可能的实施方式中的任一种,在第四种可能的实施方式中,所述二个以上编码表为静态霍夫曼编码格式的编码表。
结合该第一方面的第四种可能的实施方式,在第五种可能的实施方式中,由所述编码单元进行编码所获得的数据为Gzip格式,所述目标编码表信息是通过所述编码单元扩展所述数据的BTYPE字段记载的。
第三方面,本发明实施例提供了一种数据解码方法,包括以下步骤:接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表;读取所述待解码数据中记载的表示编码时所采用的编码表的信息;以及根据所读取到的表示编码时所采用的编码表的信息对所述待解码数据进行解码。
结合该第三方面,在第一种可能的实施方式中,所述二个以上编码表为静态霍夫曼编码格式的编码表。
第四方面,本发明实施例提供了一种数据解码装置,包括:接收单元,用于接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表;编码表信息读取单元,与所述接收单元连接,用于读取所述待解码数据中记载的表示编码时所采用的编码表的信息;以及解码单元,与所述接收单元和所述编码表信息读取单元连接,用于根据所读取到的表示编码时所采用的编码表的信息对所述待解码数据进行解码。
结合该第四方面,在第一种可能的实施方式中,所述二个以上编码表为静态霍夫曼编码格式的编码表。
本发明根据不同编码表对不同特点的待编码数据具有不同压缩率的特点,通过采用预定的二个以上编码表对待编码数据中的部分数据进行编码,来获得对待编码数据具有最大压缩率的编码表,并通过所获得的编码表对待编码数据进行编码,以提高对待编码数据的编码性能。同时,由于本发明仅对待编码数据中的部分数据进行编码来获得该具有最大压缩率的编码表,提高了编码速度。
附图说明
图1示出了GZIP格式的数据压缩封包的结构示意图。
图2示出了GZIP格式的数据压缩封包中的数据块的结构示意图。
图3示出根据本发明实施例的数据编码方法的流程图。
图4示出了根据本发明实施例的数据块的结构示意图。
图5示出了根据本发明一实施例的数据编码装置的结构框图。
图6示出了根据本发明另一实施例的数据编码装置的结构框图。
图7示出了根据本发明又一实施例的数据编码装置的结构框图。
图8示出了根据本发明再一实施例的数据编码装置的结构框图。
图9示出了根据本发明实施例的数据编码装置的另一种结构框图。
图10示出了根据本发明实施例的数据解码方法的流程图。
图11示出了根据本发明实施例的数据解码装置的结构框图。
具体实施方式
以下将对本发明的实施例给出详细的参考。尽管本发明通过这些实施方式进行阐述和说明,但需要注意的是本发明并不仅仅只局限于这些实施方式。相反,本发明涵盖权利要求所定义的发明精神和发明范围内的所有替代物、变体和等同物。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员将理解,没有这些具体细节,本发明同样可以实施。在另外一些实例中,对于大家熟知的方法、手续、元件和电路未作详细描述,以便于凸显本发明的主旨。
如上所述,本发明的主要目的是提供能支持二个以上静态霍夫曼编码表的数据数据压缩封包装置及数据数据压缩封包方法。以下将以GZIP这种压缩格式作为本发明的优先实施例进行说明。
●GZIP格式说明
图1示出了GZIP格式的数据压缩封包的结构示意图。如图1所示,每个独立的GZIP格式的数据压缩封包由头部、数据和尾部组成。其中:
头部部分的信息包括ID、CM等必须信息及根据FLG的位标识来决定的可选信息。具体信息内容如下:
ID1、ID2:均为固定值,用于标识GZIP格式,ID1=0X1F,ID2=0X8B。
CM:表示压缩方法,目前仅有一个值,即CM=8,表示压缩方法DEFLATE,DEFLATE是同时使用了LZ77算法与哈夫曼编码的一种无损数据压缩算法。
MTIME:表示修改时间,采用UNIX格式。
XFL:表示压缩模式或者压缩程度,XFL=2为最大压缩但最慢算法,XFL=4为最快但最小压缩算法。
OS:表示操作系统,例如:OS=0表示FAT文件系统,OS=3表示UNIX文件系统。
FLG:表示扩展功能标识,每个比特表示一种附加数据,具体的对应内容会在extra里面表示,包括:额外可选项、原文件名、注释文字和16位CRC校验码(CRC16)。
其中,额外可选项字段包括:用于指示可选项ID的SI1与SI2、用于指示可选项字节数的XLEN、以及长度为XLEN字节的可选项字段。需要特别说明的是这部分的内容可以自定义。
数据部分包括1个或多个数据块,每个数据块的格式包括BFINAL位、BTYPE位和数据信息字段。BFINAL位占用1比特,为1时表示该数据块是最后一个数据块。BYTPE位占用2比特,表示数据的压缩方式。数据块的结构还将在下文中结合图2作出详细说明。
尾部部分的信息,主要用来验证解压缩后的文件和压缩前的原文件是否一致,包括原始数据的32位CRC校验码(CRC32)以及表示原始数据大小的原始数据长度的低32值(ISIZE)。
GZIP在算法上使用了霍夫曼(huffman)编码。以下对霍夫曼编码原理进行说明。
●霍夫曼编码原理说明
霍夫曼编码属于码字长度可变的编码类,是霍夫曼在1952年提出的一种编码方法,即从下到上的编码方法。同其他码字长度可变的编码一样,不同码字的生成是基于不同符号出现的不同概率,按概率的大小为各符号指定不同长度的唯一码字,码字与实际符号的对应关系记录在编码表中,且码字在码表中可独立区分。霍夫曼编码的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同,且能够唯一识别。
生成霍夫曼编码的算法基于一种称为“编码树”(codingtree)的技术。算法步骤如下:
(1)初始化,根据符号出现概率的大小,按由大到小的顺序对符号进行排序。
(2)把概率最小的两个符号组成一个新符号(节点),即新符号的概率等于这两个符号概率之和。
(3)重复第2步,直到形成一个符号为止(树),其概率最后等于1。
(4)从编码树的根开始回溯到原始符号,并将每一下分枝赋值为1,上分枝赋值为0。
●静态霍夫曼编码
在RFC1951中对静态霍夫曼编码进行了规定。如下表所示,第一列表示字符(0~255)、256(文件结束标志(EndOfFile,EOF))、匹配长度(257~287表示1~32),第二列表示码字长度,第三列表示具体对应的码字。
图2示出了使用了霍夫曼编码的GZIP格式的数据压缩封包中的数据块的结构示意图。图2所示的数据块结构包括BFINAL位、BTYPE位以及数据信息字段,即,霍夫曼编码字段。其中,BTYPE位表示数据的数据压缩封包方式,更具体的说,表示霍夫曼编码的类型,00表示为没有压缩的原始数据,01表示静态霍夫曼编码,10表示动态霍夫曼编码,11暂时保留。
图3示出了根据本发明一个实施例的数据编码方法300的流程图。在接收到编码指示和待编码数据后,该实施例基于下面的步骤S301至S304对待编码数据进行编码,以得到数据压缩封包。
在步骤S301中,对预定的二个以上编码表进行编号。其中,所述二个以上编码表可由数据编码方和数据解码方协商确定。
在步骤S302中,将待编码数据中的部分数据确定为测验数据。
在步骤S303中,采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表(二个以上压缩率的计算可并行地进行)。
在本实施例中,具体可以通过如下两种方法之一来选择目标编码表:
第一种:在步骤S302中,随机选择待编码数据中的一个数据块作为测验数据;在步骤S303中,针对测验数据,采用二个以上编码表分别进行编码,以及比较所获得的二个以上编码结果的压缩率,并将获得了最大压缩率的编码表确定为目标编码表。
第二种:在步骤S302中,将待编码数据划分为二个以上数据块,以及将二个以上数据块中的N个数据块分别确定为测验数据,其中N为大于1的整数;在步骤S303中,采用二个以上编码表对每个数据块分别进行编码,获得N个数据块中每个数据块的最大压缩率,将生成最大压缩率次数最多的编码表确定为目标编码表,换言之,在步骤S303中,针对作为测验数据的各数据块进行如下操作:采用二个以上编码表分别进行编码;以及比较所获得的二个以上编码结果的压缩率,并将获得了最大压缩率的编码表确定为潜在目标编码表。统计各潜在目标编码表的出现次数,并将出现次数最多的潜在目标编码表确定为目标编码表。
在步骤S304中,采用目标编码表对待编码数据进行编码,并在所获得的编码结果中记载表示目标编码表的信息的目标编码表的编号。
根据本发明的一个实施例,上述二个以上编码表可以为静态霍夫曼编码表。通常情况下,不同的静态霍夫曼编码表对待压缩数据的压缩率可以通过待压缩数据的特点得以体现。其中,待压缩数据的特点可以是指,待压缩数据主要包括哪种类型的字符(例如,数字、特殊字符、普通字符等)或其所使用的语言类型(例如,中文、英文等)。若待压缩数据包括字符和数字较多,则对于字符和数字具有较短编码的静态霍夫曼编码表对待压缩数据具有较大的压缩率;若待压缩数据包括特殊字符较多,则对于特殊字符具有较短编码的静态霍夫曼编码表对待压缩数据具有较大的压缩率;若待压缩数据的语言类型为英文,则ASCII码较短的静态霍夫曼编码表对待压缩数据具有较大的压缩率;若待压缩数据的语言类型为中文,则对于数字(如数字0~9)具有较短编码的静态霍夫曼编码表对待压缩数据具有较大的压缩率。
根据本发明的一个实施例,根据数据编码方法300所获得的数据封包可以为Gzip格式。其中,通过对Gzip格式的BTYPE字段进行扩展来记载表示目标编码表的编号,并通过设定数据压缩封包中数据块的特定位来将该数据块标记为由指定的静态霍夫曼编码表进行编码,所述特定位可为BTYPE位。
图4示出了根据本发明一个实施例的数据压缩封包中数据块的结构示意图。该实施例通过对图2中的BTYPE位进行扩展以使该数据块能对应二个以上静态霍夫曼编码表。在图4所示的数据块结构中,BTYPE位被设置为11,同时扩展3bit的静态霍夫曼编号位,用于记录该数据块对应的静态霍夫曼编码表的编号。霍夫曼编码字段用于记录该数据块的霍夫曼编码。
具体的数据位分配方式为:比特0为BFINAL位,为1时表示该数据块是最后一个数据块;比特1~2为BTYPE位,为11时表示该数据块具有扩展位;比特3~5为3bit的扩展位,可用于记录所使用的静态霍夫曼表的编号,其中编号000至111可分别表示静态霍夫曼编码表1至8,该标示方式可以和以前的标示方式兼容;比特6~N为与该数据块对应的霍夫曼编码;最后1比特与图2的数据块结构中相同,为10011。
图5示出了根据本发明一实施例的数据编码装置500的结构框图。如图5所示,数据编码装置500包括:测验数据确定单元501、编码表选择单元502和编码单元503。测验数据确定单元501用于将待编码数据中的部分数据确定为测验数据。编码表选择单元502与测验数据确定单元501连接,用于比较对测验数据分别采用二个以上编码表进行编码所获得的二个以上编码结果的压缩率,并选择获得了最大压缩率的编码表作为目标编码表。编码单元503与测验数据确定单元501以及编码表选择单元502连接,用于采用二个以上编码表分别对测验数据进行编码,以及在编码表选择单元502确定目标编码表后,采用目标编码表对待编码数据进行编码,并在所获得的编码结果中记载所采用的编码表的编号。
图6示出了根据本发明另一实施例的数据编码装置600的结构框图,该实施例更详细地示出了数据编码装置500的结构。如图6所示,测验数据确定单元501包括选择模块5011,用以随机选择待编码数据中的一个数据块作为测验数据。编码表选择单元502包括压缩率比较模块5021,用于比较二个以上编码表对该数据块分别进行编码的结果,并将获得最大压缩率的编码表确定为目标编码表。
图7示出了根据本发明又一实施例的数据编码装置700的结构框图,该实施例更详细地示出了数据编码装置500的结构。如图7所示,测验数据确定单元501包括分块模块5012和选择模块5011。分块模块5012用以将待编码数据划分为二个以上数据块。选择模块5011用以将二个以上数据块中的N个数据块分别确定为测验数据,其中N为大于1的整数。编码表选择单元502包括压缩率比较模块5021和统计模块5022。压缩率比较模块5021用以比较二个以上编码表对每个数据块分别进行编码的结果,获得N个数据块中每个数据块的最大压缩率。统计模块5022与压缩率比较模块5021连接,用于将生成最大压缩率次数最多的编码表确定为目标编码表。
图8示出了根据本发明再一实施例的数据编码装置800的结构框图。数据编码装置800可用静态霍夫曼编码表对数据进行编码以形成GZIP格式的数据压缩封包。在该实施例中,数据编码装置800还可以包括存储单元504、接收单元505、编号单元506。存储单元504可用于存储二个以上待选的静态霍夫曼编码表。存储单元504所存储的静态霍夫曼编码表的数量可由数据压缩方和数据解压缩方协商确定,也可预先设定在压缩程序中。可根据存储单元504所存储的待选的静态霍夫曼编码表的数量,分配数据块中扩展的静态霍夫曼编号位的位数。例如,若数据压缩方和数据解压缩方协商确定了8个待选的静态霍夫曼编码表,则在如图4所示数据块结构中,分配3比特来记录静态霍夫曼表的编号,以000至111表示静态霍夫曼编码表的编号1至8。接收单元505可用于接收压缩指示和待压缩数据,待压缩数据可由用户指定。编号单元506用于为存储在存储单元504中的静态霍夫曼编码表编号。
总之,本发明能够根据二个以上编码表对待编码数据中部分数据的编码结果,从所述二个以上编码表中选择获得了最大压缩率的编码表对待编码数据进行编码,使得GZIP能够支持二个以上静态霍夫曼编码表,从而提高了编码性能。
图10示出了根据本发明实施例的数据解码方法1000的流程图。该实施例基于下面的步骤S1001至S1003进行数据解码。
在步骤S1001中,接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表。其中,所述二个以上编码表可为静态霍夫曼格式的编码表。
在步骤S1002中,读取所述待解码数据中记载的表示编码时所采用的编码表的信息。
在步骤S1003中,根据所读取到的表示编码时所采用的编码表的信息对所述待解码数据进行解码。
图11示出了根据本发明实施例的数据解码装置1100的结构框图。如图11所示,数据解码装置1100包括接收单元1101、编码表信息读取单元1102、解码单元1103。接收单元1101用于接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表。其中,所述二个以上编码表可为静态霍夫曼格式的编码表。编码表信息读取单元1102与接收单元1101连接,用于读取所述待解码数据中记载的表示编码时所采用的编码表的信息。解码单元1103与接收单元1101和编码表信息读取单元1102连接,用于根据编码表信息读取单元1102所读取到的表示编码时所采用的编码表的信息,对接收单元1101接收到的所述待解码数据进行解码。
图9为本发明实施例提供的又一种数据编码装置900的结构示意图,本发明具体实施例并不对数据编码装置的具体实现做限定。如图9所示,该数据编码装置900可以包括:
处理器(processor)710、通信接口(CommunicationsInterface)720、存储器(memory)730、以及通信总线740。其中:
处理器710、通信接口720、以及存储器730通过通信总线740完成相互间的通信。
通信接口720,用于与比如客户端等的网元通信。
处理器710,用于执行程序732,具体可以执行上述图5所示的方法实施例中的相关步骤。
具体地,程序732可以包括程序代码,所述程序代码包括计算机操作指令。
处理器710可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器730,用于存放程序732。存储器730可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。程序732具体可以包括:
测验数据确定单元,用于将待编码数据中的部分数据确定为测验数据;
编码表选择单元,与所述测验数据确定单元连接,用于比较对所述测验数据采用预定的二个以上编码表分别进行编码所获得的二个以上编码结果的压缩率,并选择获得最大压缩率的编码表作为目标编码表;
编码单元,与所述测验数据确定单元以及所述编码表选择单元连接,用于采用所述二个以上编码表分别对所述测验数据进行编码;在所述编码表选择单元确定所述目标编码表后,采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。
程序732中各单元的具体实现可以参见图5所示实施例中的相应单元,在此不赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
上文具体实施方式和附图仅为本发明的常用实施例。显然,在不脱离权利要求书所界定的本发明精神和发明范围的前提下可以有各种增补、修改和替换。本领域技术人员应该理解,本发明在实际应用中可根据具体的环境和工作要求在不背离发明准则的前提下在形式、结构、布局、比例、材料、元素、组件及其它方面有所变化。因此,在此披露的实施例仅用于说明而非限制,本发明的范围由所附权利要求及其合法等同物界定,而不限于此前的描述。
Claims (11)
1.一种数据编码方法,其特征在于,包括以下步骤:
将待编码数据中的部分数据确定为测验数据;
采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表,其中,所述二个以上编码表为由数据编码方和数据解码方协商确定的、静态霍夫曼格式的编码表;
采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。
2.根据权利要求1所述的数据编码方法,其特征在于,所述将待编码数据中的部分数据确定为测验数据包括:随机选择所述待编码数据中的一个数据块作为所述测验数据。
3.根据权利要求1所述的数据编码方法,其特征在于,
所述将待编码数据中的部分数据确定为测验数据包括:
将所述待编码数据划分为二个以上数据块;
将所述二个以上数据块中的N个数据块分别确定为所述测验数据,其中N为大于1的整数,
所述采用预定的二个以上编码表分别对所述测验数据进行编码,并比较所获得的二个以上编码结果的压缩率,选择获得最大压缩率的编码表作为目标编码表包括:
采用所述二个以上编码表对每个数据块分别进行编码,获得所述N个数据块中每个数据块的最大压缩率;
将生成所述最大压缩率次数最多的编码表确定为目标编码表。
4.根据权利要求1所述的数据编码方法,其特征在于,采用所述目标编码表对所述待编码数据进行编码所获得的数据为GZIP格式,所述目标编码表信息是通过扩展GZIP格式的数据的BTYPE字段记载的。
5.一种数据编码装置,其特征在于,包括:
测验数据确定单元,用于将待编码数据中的部分数据确定为测验数据;
编码表选择单元,与所述测验数据确定单元连接,用于比较对所述测验数据采用预定的二个以上编码表分别进行编码所获得的二个以上编码结果的压缩率,并选择获得最大压缩率的编码表作为目标编码表,其中,所述二个以上编码表为由所述数据编码装置和数据解码装置协商确定的、静态霍夫曼格式的编码表;
编码单元,与所述测验数据确定单元以及所述编码表选择单元连接,用于采用所述二个以上编码表分别对所述测验数据进行编码;在所述编码表选择单元确定所述目标编码表后,采用所述目标编码表对所述待编码数据进行编码,并在所获得的编码结果中记载所述目标编码表的信息。
6.根据权利要求5所述的数据编码装置,其特征在于,
所述测验数据确定单元包括:
选择模块,用以随机选择所述待编码数据中的一个数据块作为所述测验数据,
所述编码表选择单元包括:
压缩率比较模块,用于比较所述二个以上编码表对该数据块分别进行编码的结果,并将获得最大压缩率的编码表确定为所述目标编码表。
7.根据权利要求5所述的数据编码装置,其特征在于,
所述测验数据确定单元包括:
分块模块,用以将所述待编码数据划分为二个以上数据块;以及
选择模块,用以将所述二个以上数据块中的N个数据块分别确定为所述测验数据,其中N为大于1的整数,
所述编码表选择单元包括:
压缩率比较模块,用于比较所述二个以上编码表对每个数据块分别进行编码的结果,获得所述N个数据块中每个数据块的最大压缩率;
统计模块,用于将生成所述最大压缩率次数最多的编码表确定为所述目标编码表。
8.根据权利要求5至7中任一项所述的数据编码装置,其特征在于,所述数据编码装置还包括存储单元,所述二个以上编码表存储于所述存储单元中。
9.根据权利要求5所述的数据编码装置,其特征在于,由所述编码单元进行编码所获得的数据为GZIP格式,所述目标编码表信息是通过所述编码单元扩展GZIP格式的数据的BTYPE字段记载的。
10.一种数据解码方法,其特征在于,包括以下步骤:
接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表,所述二个以上编码表为由数据编码方和数据解码方协商确定的、静态霍夫曼格式的编码表;
读取所述待解码数据中记载的表示编码时所采用的编码表的信息;以及
根据所读取到的表示编码时所采用的编码表的信息对所述待解码数据进行解码。
11.一种数据解码装置,其特征在于,包括:
接收单元,用于接收待解码数据,其中,所述待解码数据中记载有表示编码时所采用的编码表的信息,所述编码时所采用的编码表为从预定的二个以上编码表中选出的、对待编码数据中的部分数据具有最大压缩率的编码表,所述二个以上编码表为由数据编码装置和所述数据解码装置协商确定的、静态霍夫曼格式的编码表;
编码表信息读取单元,与所述接收单元连接,用于读取所述待解码数据中记载的表示编码时所采用的编码表的信息;以及
解码单元,与所述接收单元和所述编码表信息读取单元连接,用于根据所读取到的表示编码时所采用的编码表的信息对所述待解码数据进行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210593681.8A CN103051341B (zh) | 2012-12-31 | 2012-12-31 | 数据编码装置及方法、数据解码装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210593681.8A CN103051341B (zh) | 2012-12-31 | 2012-12-31 | 数据编码装置及方法、数据解码装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103051341A CN103051341A (zh) | 2013-04-17 |
CN103051341B true CN103051341B (zh) | 2016-01-27 |
Family
ID=48063857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210593681.8A Expired - Fee Related CN103051341B (zh) | 2012-12-31 | 2012-12-31 | 数据编码装置及方法、数据解码装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103051341B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105099460B (zh) * | 2014-05-07 | 2018-05-04 | 瑞昱半导体股份有限公司 | 字典压缩方法、字典解压缩方法与字典建构方法 |
US9509335B1 (en) * | 2015-05-11 | 2016-11-29 | Via Alliance Semiconductor Co., Ltd. | Hardware data compressor that constructs and uses dynamic-prime huffman code tables |
CN107534650B (zh) * | 2015-09-29 | 2020-01-31 | 华为技术有限公司 | 一种帧传输方法、装置和网络系统 |
CN106815875B (zh) * | 2016-12-06 | 2020-02-07 | 腾讯科技(深圳)有限公司 | 信息位图的编码、解码方法及装置 |
CN108134609A (zh) * | 2017-12-21 | 2018-06-08 | 深圳大学 | 一种通用数据gz格式的多线程压缩与解压方法及装置 |
CN111262587B (zh) * | 2018-11-30 | 2023-06-06 | 康泰医学系统(秦皇岛)股份有限公司 | 一种数据压缩方法、装置、设备及计算机可读存储介质 |
CN114726380B (zh) * | 2022-06-07 | 2022-09-02 | 西南交通大学 | 一种监测数据无损压缩方法、装置、设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284791A (zh) * | 1999-04-20 | 2001-02-21 | 松下电器产业株式会社 | 编码器 |
CN101253761A (zh) * | 2005-09-02 | 2008-08-27 | 佳能株式会社 | 图像编码设备和图像编码方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI220959B (en) * | 2003-06-05 | 2004-09-11 | Carry Computer Eng Co Ltd | Storage device with optimized compression management mechanism |
US7426462B2 (en) * | 2003-09-29 | 2008-09-16 | Sony Corporation | Fast codebook selection method in audio encoding |
-
2012
- 2012-12-31 CN CN201210593681.8A patent/CN103051341B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1284791A (zh) * | 1999-04-20 | 2001-02-21 | 松下电器产业株式会社 | 编码器 |
CN101253761A (zh) * | 2005-09-02 | 2008-08-27 | 佳能株式会社 | 图像编码设备和图像编码方法 |
Non-Patent Citations (1)
Title |
---|
MPEG-2 AAC解码器的优化算法;王昱洁等;《现代电子技术》;20070930(第18期);第152-155页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103051341A (zh) | 2013-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103051341B (zh) | 数据编码装置及方法、数据解码装置及方法 | |
CN103384884B (zh) | 一种文件压缩方法、文件解压缩方法、装置及服务器 | |
JP5831298B2 (ja) | プログラム、情報処理装置およびインデックス生成方法 | |
KR101049699B1 (ko) | 데이터의 압축방법 | |
JP3778087B2 (ja) | データ符号化装置及びデータ復号装置 | |
JP6679874B2 (ja) | 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法 | |
CN103326732A (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
JP6641857B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
WO2013140530A1 (ja) | プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体 | |
KR20190064621A (ko) | 2진 데이터를 인코딩 및 디코딩하기 위한 방법 및 디바이스 | |
JP5656593B2 (ja) | 符号化データを復号する装置及び方法 | |
JP6540308B2 (ja) | 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置 | |
CN104811209A (zh) | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 | |
WO2016132430A1 (ja) | データ圧縮装置、データ伸張装置、データ圧縮方法、データ伸張方法及びプログラム | |
WO2014030189A1 (ja) | 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム | |
JP2021145281A (ja) | 圧縮装置、伸張装置及び方法 | |
CN103210590A (zh) | 压缩方法及设备 | |
JP2016170750A (ja) | データ管理プログラム、情報処理装置およびデータ管理方法 | |
US20160226516A1 (en) | Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device | |
US9998142B1 (en) | Techniques for invariant-reference compression | |
JP6135788B2 (ja) | 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム | |
JP6931442B2 (ja) | 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法 | |
JP2016052046A (ja) | 圧縮装置、伸長装置およびストレージ装置 | |
JP2010258532A (ja) | ビット長を符号に変換する回路及び方法 | |
WO2014030180A1 (ja) | 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160127 Termination date: 20181231 |
|
CF01 | Termination of patent right due to non-payment of annual fee |