CN114006619A - 一种gzip格式文件转换为lz4格式文件的方法 - Google Patents
一种gzip格式文件转换为lz4格式文件的方法 Download PDFInfo
- Publication number
- CN114006619A CN114006619A CN202111166387.4A CN202111166387A CN114006619A CN 114006619 A CN114006619 A CN 114006619A CN 202111166387 A CN202111166387 A CN 202111166387A CN 114006619 A CN114006619 A CN 114006619A
- Authority
- CN
- China
- Prior art keywords
- format file
- gzip
- frame
- file
- tail
- 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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请公开了一种GZIP格式文件转换为LZ4格式文件的方法,包括:解析GZIP格式文件的文件尾,得到目标语法元素的数值;编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;编码所述编码数据,得到LZ4格式文件的序列;封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。该方法能够提高格式转换速度,快速完成格式转换。本申请还公开了一种GZIP格式文件转换为LZ4格式文件的装置、设备以及计算机可读存储介质,均具有上述技术效果。
Description
技术领域
本申请涉及格式转换技术领域,特别涉及一种GZIP格式文件转换为LZ4格式文件的方法;还涉及一种GZIP格式文件转换为LZ4格式文件的装置、设备以及计算机可读存储介质。
背景技术
面对持续增加的海量数据,数据压缩成为减轻服务器存储负担,降低存储成本的有效方法之一。数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率;或者按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间。当下业界主要采用两种数据压缩标准:GZIP和LZ4。PC以及服务器中通常采用GZIP数据压缩标准,但在移动及物联网终端通常采用LZ4数据压缩标准。当终端与服务器存在数据交互时,两者之间的压缩数据无法直接对接,通常需要对压缩数据进行格式转换。
当前不同格式数据之间的转换方式大多采用解码再编码的方式。即将一种压缩格式的数据完全解码后,得到源数据,然后再对源数据进行编码,得到另一种压缩格式的数据。这种解码再编码的方式的转换速度较慢,已无法满足快速转换的应用需求。因此,如何提高格式转换速度,快速完成格式转换已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种GZIP格式文件转换为LZ4格式文件的方法,能够提高格式转换速度,快速完成格式转换。本申请的另一个目的是提供一种GZIP格式文件转换为LZ4格式文件的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种GZIP格式文件转换为LZ4格式文件的方法,包括:
解析GZIP格式文件的文件尾,得到目标语法元素的数值;
编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
编码所述编码数据,得到LZ4格式文件的序列;
封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
可选的,所述解析GZIP格式文件的文件尾,得到目标语法元素的数值包括:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
可选的,所述将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素包括:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
可选的,所述构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表包括:
构建第一哈夫曼树,并根据所述第一哈夫曼树生成第一哈夫曼码表;所述第一哈夫曼码表用于解析原文与长度;
构建第二哈夫曼树,并根据所述第二哈夫曼树生成第二哈夫曼表;所述第二哈夫曼码表用于解析位移。
可选的,还包括:
解析所述GZIP格式文件的数据块的块头,识别所述GZIP格式文件的最后一个数据块;
在所述最后一个数据块对应的所述序列后添加表征所述序列为最后一个序列的标志信息。
为解决上述技术问题,本申请还提供了一种GZIP格式文件转换为LZ4格式文件的装置,包括:
第一解析模块,用于解析GZIP格式文件的文件尾,得到目标语法元素的数值;
第一编码模块,用于编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
构建模块,用于构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
第二解析模块,用于根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
第二编码模块,用于编码所述编码数据,得到LZ4格式文件的序列;
封装模块,用于封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
可选的,所述第一解析模块具体用于:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
可选的,所述第一编码模块具体用于:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
为解决上述技术问题,本申请还提供了一种GZIP格式文件转换为LZ4格式文件的设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的GZIP格式文件转换为LZ4格式文件的方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的GZIP格式文件转换为LZ4格式文件的方法的步骤。
本申请所提供的GZIP格式文件转换为LZ4格式文件的方法,包括:解析GZIP格式文件的文件尾,得到目标语法元素的数值;编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;编码所述编码数据,得到LZ4格式文件的序列;封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
可见,本申请所提供的GZIP格式文件转换为LZ4格式文件的方法,通过解析GZIP格式文件,直接得到编码数据,并对编码数据进行编码,得到LZ4格式文件的序列,由此,直接利用GZIP格式文件中的编码数据,而不是在完全解码得到源文件后,重新搜索编码数据中的匹配对,几乎相当于跳过了传统转换方案的重新编码流程,由此极大的提高了转换速度。
本申请所提供的GZIP格式文件转换为LZ4格式文件的装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种GZIP格式文件转换为LZ4格式文件的方法的流程示意图;
图2为本申请实施例所提供的一种GZIP格式文件转换为LZ4格式文件的装置的示意图;
图3为本申请实施例所提供的一种GZIP格式文件转换为LZ4格式文件的设备的示意图。
具体实施方式
本申请的核心是提供一种GZIP格式文件转换为LZ4格式文件的方法,能够提高格式转换速度,快速完成格式转换。本申请的另一个核心是提供一种GZIP格式文件转换为LZ4格式文件的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种GZIP格式文件转换为LZ4格式文件的方法的流程示意图,参考图1所示,该方法包括:
S101:解析GZIP格式文件的文件尾,得到目标语法元素的数值;
S102:编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
具体的,目标语法元素是指LZ4格式文件所需的语法元素。GZIP格式文件中的语法元素的个数、种类与LZ4格式文件中的语法元素的个数、种类不完全同,部分GZIP格式文件中的语法元素并不是LZ4格式文件中的语法元素,因此在进行GZIP格式文件向LZ4格式文件的转化时,需从GZIP格式文件中提取LZ4格式文件所需的语法元素的数值。
在一种具体的实施方式中,所述解析GZIP格式文件的文件尾,得到目标语法元素的数值包括:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
所述将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素包括:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
具体而言,GZIP格式文件的结构如图2所示,包括GZIP文件头、若干采用Deflate封装的压缩数据块以及GZIP文件尾。其中,GZIP文件头包含以下语法元素:GZIP格式校验码、压缩算法标识符、标志位、源文件时间撮、附加标识以及操作系统标识符。
GZIP格式校验码总计2个字节(ID1与ID2),2个字节都为固定值。其中,ID1=31(0x1F),ID2=139(0x8B)。对应的LZ4文件校验码为0x184D2204。
压缩算法标识符CM总计1个字节。当前的GZIP压缩算法仅仅支持Deflate压缩算法,因此压缩算法标识符CM可看作固定值8,总计1个字节。
标志位FLG,总计1个字节。其中,标志位FLG的每个bit所表示的信息如下:
bit 0FTEXT-指示文本数据;
bit 1FHCRC-指示存在CRC16头校验字段;
bit 2FEXTRA-指示存在可选项字段;
bit 3FNAME-指示存在原文件名字段;
bit 4FCOMMENT-指示存在注释字段;
bit 5-7reserved全部置为0。
由于LZ4格式不涉及以上标志位以及附带的信息,因此在解析出以上标志位所附带的数据后直接放弃。
源文件时间戳MTIME,总计4个字节。LZ4格式不涉及源文件时间戳,因此可跳过解析源文件时间戳的流程。
附加标志XFL以及操作系统标志符OS都使用1个字节表征,LZ4格式不涉及这两个语法元素,因此可跳过对这个语法元素的解析流程。
GZIP文件尾包含两个语法元素:源数据校验码CRC32与源数据内容的数量(字节数)。LZ4格式文件的帧头由Magic number与Frame Descriptor两个语法元素构成。Magicnumber是LZ4格式文件的标识码,其是一个32bit的数字,数值必须等于0x184D2204。FrameDescriptor是帧描述符,是解码LZ4文件所需的控制参数的集合。帧描述符可以分解为如下语法元素:
BD:用单字节数字标识,用来标识帧内部的块数据的长度的最大值。
Content Size:8个字节,为可选项,用来标明源文件的数据长度,即解压长度。
Dictionary ID:4个字节,为可选项。用来标明解码数据所依赖的字典的ID。
HC:1个字节,用以表示压缩块中的最大值。
FLG:1个字节。
LZ4格式文件的帧尾包含两个语法元素:End mask与CRC32,两者都是32bit的数字。其中End mask的值恒为0x00000000,CRC32为帧数据校验码。
GZIP格式文件中的源数据校验码CRC32等同于LZ4格式文件的帧尾的帧数据校验码;GZIP格式文件中的源数据内容的数量等同于所述LZ4格式文件的帧头的解压长度。因此,解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值,并将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。LZ4格式文件帧头以及帧尾中的其他语法元素根据所代表的含义进行相应的赋值。
S103:构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
S104:根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
具体的,GZIP格式文件中的数据块采用deflate封装,故为解析得到编码数据,首先解析CZIP格式文件的哈夫曼码信息,并根据解析得到的哈夫曼码信息构造哈夫曼树,进而根据哈夫曼树生成哈夫曼码表。在构建哈夫曼码表的基础上,利用所构建的哈夫曼码表,解析GZIP文件中的编码数据,得到原文、长度与偏移。
所述构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表包括:
构建第一哈夫曼树,并根据所述第一哈夫曼树生成第一哈夫曼码表;所述第一哈夫曼码表用于解析原文与长度;
构建第二哈夫曼树,并根据所述第二哈夫曼树生成第二哈夫曼表;所述第二哈夫曼码表用于解析位移。
具体而言,根据解析得到的哈夫曼码信息构造原文与长度所用的哈夫曼树,并根据原文与长度所用的哈夫曼树,生成相应的哈夫曼码表。所生成的哈夫曼码表的长度为286。其中,0~255表示原文,257~286表示长度,256为块结束符。根据解析得到的哈夫曼信息构造位移所用的哈夫曼树,并根据位移所用的哈夫曼树,生成相应的哈夫曼码表。
S105:编码所述编码数据,得到LZ4格式文件的序列;
具体的,得到编码数据,包括原文、长度与偏移,对原文与匹配对(包括长度与偏移)进行编码得到符合LZ4格式规范的Sequence即序列。所谓序列是指LZ4格式中的最小数据单元。
序列分为五个部分,包括:Token,literal length bytes,literals(原文),offset(偏移),Match length bytes。
Token为Sequence的第一个字节,相当于Sequence的标识符,Token的高4位与原文的长度有关,低4位表示length的大小有关。literal length bytes(附加原文长度字节)为可选项,如果Token的高4位的值小于15,则不存在literal length bytes;如果Token的高4位的值为15,表示存在literal length bytes,解析时,逐字节解析,如果当前字节不为255,停止解析。Literals(原文),若干个原文字符。Offset(偏移),用两个字节表示重复数据的偏移量。Match length bytes(附加匹配长度字节),如果Token的低4位的值小于15,则不存在Match length bytes,如果Token的低4位的值为15,表示存在Match length bytes。
S106:封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
具体的,得到LZ4格式文件的帧头、帧尾以及序列后,进一步对帧头、帧尾以及序列进行封装,得到LZ4格式文件,完成GZIP格式文件向LZ4格式文件的转换。
进一步,还包括:
解析所述GZIP格式文件的数据块的块头,识别所述GZIP格式文件的最后一个数据块;
在与所述GZIP格式文件的最后一个数据块对应的所述LZ4格式文件中的数据块添加表征为最后一个数据块的标志信息。
具体而言,Deflate头仅存在3bit的数据,如下:
1)BFINAL,总计1bit,该bit值为1表征当前采用deflate封装的压缩数据块为最后一个数据块。相应的,在LZ4格式文件的最后一个数据块加入表征其为最后一个数据块的标志信息。
2)BTYPE,总计2bit,用于表示数据压缩编码方式。BTYPE的取值及含义:
0表示没有压缩;1表示静态Huffman编码;2表示动态Huffman编码。
综上所述,本申请所提供的GZIP格式文件转换为LZ4格式文件的方法,通过解析GZIP格式文件,直接得到编码数据,并对编码数据进行编码,得到LZ4格式文件的序列,由此,直接利用GZIP格式文件中的编码数据,而不是在完全解码得到源文件后,重新搜索编码数据中的匹配对,几乎相当于跳过了传统转换方案的重新编码流程,由此极大的提高了转换速度。
本申请还提供了一种GZIP格式文件转换为LZ4格式文件的装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图2,图2为本申请实施例所提供的一种GZIP格式文件转换为LZ4格式文件的装置的示意图,结合图2所示,该装置包括:
第一解析模块10,用于解析GZIP格式文件的文件尾,得到目标语法元素的数值;
第一编码模块20,用于编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
构建模块30,用于构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
第二解析模块40,用于根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
第二编码模块50,用于编码所述编码数据,得到LZ4格式文件的序列;
封装模块60,用于封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
在上述实施例的基础上,可选的,所述第一解析模块10具体用于:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
在上述实施例的基础上,可选的,所述第一编码模块20具体用于:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
在上述实施例的基础上,可选的,所述构建模块30包括:
第一构建单元,用于构建第一哈夫曼树,并根据所述第一哈夫曼树生成第一哈夫曼码表;所述第一哈夫曼码表用于解析原文与长度;
第二构建单元,用于构建第二哈夫曼树,并根据所述第二哈夫曼树生成第二哈夫曼表;所述第二哈夫曼码表用于解析位移。
在上述实施例的基础上,可选的,还包括:
第三解析模块,用于解析所述GZIP格式文件的数据块的块头,识别所述GZIP格式文件的最后一个数据块;
添加模块,用于在所述最后一个数据块对应的所述序列后添加表征所述序列为最后一个序列的标志信息。
本申请所提供的GZIP格式文件转换为LZ4格式文件的装置,通过解析GZIP格式文件,直接得到编码数据,并对编码数据进行编码,得到LZ4格式文件的序列,由此,直接利用GZIP格式文件中的编码数据,而不是在完全解码得到源文件后,重新搜索编码数据中的匹配对,几乎相当于跳过了传统转换方案的重新编码流程,由此极大的提高了转换速度。
本申请还提供了一种GZIP格式文件转换为LZ4格式文件的设备,参考图3所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
解析GZIP格式文件的文件尾,得到目标语法元素的数值;编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;编码所述编码数据,得到LZ4格式文件的序列;封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
解析GZIP格式文件的文件尾,得到目标语法元素的数值;编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;编码所述编码数据,得到LZ4格式文件的序列;封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。
Claims (10)
1.一种GZIP格式文件转换为LZ4格式文件的方法,其特征在于,包括:
解析GZIP格式文件的文件尾,得到目标语法元素的数值;
编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
编码所述编码数据,得到LZ4格式文件的序列;
封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
2.根据权利要求1所述的GZIP格式文件转换为LZ4格式文件的方法,其特征在于,所述解析GZIP格式文件的文件尾,得到目标语法元素的数值包括:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
3.根据权利要求2所述的GZIP格式文件转换为LZ4格式文件的方法,其特征在于,所述将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素包括:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
4.根据权利要求3所述的GZIP格式文件转换为LZ4格式文件的方法,其特征在于,所述构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表包括:
构建第一哈夫曼树,并根据所述第一哈夫曼树生成第一哈夫曼码表;所述第一哈夫曼码表用于解析原文与长度;
构建第二哈夫曼树,并根据所述第二哈夫曼树生成第二哈夫曼表;所述第二哈夫曼码表用于解析位移。
5.根据权利要求4所述的GZIP格式文件转换为LZ4格式文件的方法,其特征在于,还包括:
解析所述GZIP格式文件的数据块的块头,识别所述GZIP格式文件的最后一个数据块;
在与所述GZIP格式文件的最后一个数据块对应的所述LZ4格式文件中的数据块添加表征为最后一个数据块的标志信息。
6.一种GZIP格式文件转换为LZ4格式文件的装置,其特征在于,包括:
第一解析模块,用于解析GZIP格式文件的文件尾,得到目标语法元素的数值;
第一编码模块,用于编码LZ4格式文件的帧头、帧尾,并将所述目标语法元素的数值赋值给所述帧头与所述帧尾中相应的语法元素;
构建模块,用于构建哈夫曼树,并根据所述哈夫曼树生成哈夫曼码表;
第二解析模块,用于根据所述哈夫曼码表,解析所述GZIP格式文件,得到编码数据;
第二编码模块,用于所述编码数据,得到LZ4格式文件的序列;
封装模块,用于封装所述帧头、所述帧尾以及所述序列,得到所述LZ4格式文件。
7.根据权利要求6所述的GZIP格式文件转换为LZ4格式文件的装置,其特征在于,所述第一解析模块具体用于:
解析所述GZIP格式文件的文件尾,得到源数据校验码的数值与源数据字节数的数值。
8.根据权利要求6所述的GZIP格式文件转换为LZ4格式文件的装置,其特征在于,所述第一编码模块具体用于:
将所述源数据校验码的数值赋值给所述LZ4格式文件的帧尾的帧数据校验码;
将所述源数据字节数的数值赋值给所述LZ4格式文件的帧头的解压长度。
9.一种GZIP格式文件转换为LZ4格式文件的设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的GZIP格式文件转换为LZ4格式文件的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的GZIP格式文件转换为LZ4格式文件的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166387.4A CN114006619A (zh) | 2021-09-30 | 2021-09-30 | 一种gzip格式文件转换为lz4格式文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166387.4A CN114006619A (zh) | 2021-09-30 | 2021-09-30 | 一种gzip格式文件转换为lz4格式文件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114006619A true CN114006619A (zh) | 2022-02-01 |
Family
ID=79922293
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111166387.4A Pending CN114006619A (zh) | 2021-09-30 | 2021-09-30 | 一种gzip格式文件转换为lz4格式文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114006619A (zh) |
-
2021
- 2021-09-30 CN CN202111166387.4A patent/CN114006619A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8942502B2 (en) | Parallelization of variable length decoding | |
US9077368B2 (en) | Efficient techniques for aligned fixed-length compression | |
KR100614677B1 (ko) | 구조화된 문서를 압축/복원하기 위한 방법 | |
CN101783788B (zh) | 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置 | |
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
JPH05211616A (ja) | マルチモード・データ・ストリーム・ジェネレータ | |
CN108156173A (zh) | 一种json数据包的动态无损压缩方法 | |
WO2010044100A1 (en) | Lossless compression | |
CN112165331A (zh) | 数据压缩方法及其装置、数据解压方法及其装置、存储介质及电子设备 | |
CN110518917A (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
CN111262876A (zh) | 基于区块链的数据处理方法、装置、设备以及存储介质 | |
CN104125475B (zh) | 一种多维量子数据压缩、解压缩方法及装置 | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
CN105052040A (zh) | 多流压缩与解压的方法与系统 | |
EP2219117A1 (en) | A processing module, a device, and a method for processing of XML data | |
CN112188211A (zh) | 一种转码实现方法和装置 | |
JP2007520112A (ja) | Xmlファイルのための迅速にクエリ可能なデータ圧縮フォーマット | |
CN114614829A (zh) | 卫星数据帧的处理方法、装置、电子设备和可读存储介质 | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
CN118381513A (zh) | 一种基于数据对象的数据压缩传输方法 | |
CN113986820A (zh) | 一种lz4格式文件转换为gzip格式文件的方法 | |
CN107911196B (zh) | 一种雷达航迹报文传输方法 | |
CN113742294A (zh) | 一种asn.1-per信令消息解码方法、系统、装置及介质 | |
CN114006619A (zh) | 一种gzip格式文件转换为lz4格式文件的方法 | |
US10931303B1 (en) | Data processing system |
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 |