CN113986820A - 一种lz4格式文件转换为gzip格式文件的方法 - Google Patents
一种lz4格式文件转换为gzip格式文件的方法 Download PDFInfo
- Publication number
- CN113986820A CN113986820A CN202111166379.XA CN202111166379A CN113986820A CN 113986820 A CN113986820 A CN 113986820A CN 202111166379 A CN202111166379 A CN 202111166379A CN 113986820 A CN113986820 A CN 113986820A
- Authority
- CN
- China
- Prior art keywords
- format file
- gzip
- format
- file
- header
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/116—Details of conversion of file system types or formats
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种LZ4格式文件转换为GZIP格式文件的方法,包括:解析LZ4格式文件的帧头与帧尾,得到目标语法元素;构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。该方法能够极大的提高格式转换速度。本申请还公开了一种LZ4格式文件转换为GZIP格式文件的装置、设备及计算机可读存储介质,均具有上述技术效果。
Description
技术领域
本申请涉及格式转换技术领域,特别涉及一种LZ4格式文件转换为GZIP格式文件的方法;还涉及一种LZ4格式文件转换为GZIP格式文件的装置、设备以及计算机可读存储介质。
背景技术
随着大数据、AI、区块链等前沿技术的迅速发展,催生了数据爆发式的增长,海量数据将对现有的存储设备带来巨大的压力。另外,随着云计算对传统计算架构的替代,数据存储的结构也在发生变化,计算资源和存储资源将进一步向头部的数据中心聚合,进一步给服务器存储带来压力。面对这些持续增加的海量数据,数据压缩成为减轻服务器存储负担,降低存储成本的有效方法之一。数据压缩技术主要体现在重复冗余数据的压缩处理,可分为如下几步实现:查找重复数据,判断前文中是否有与当前数据相同的段落,并得到前文的地址;表征重复数据,按照一定的规则表示重复数据,通常利用游程编码表征;按照特定的压缩格式生成压缩文件。
当下业界主流的数据压缩标准为GZIP数据压缩标准与LZ4数据压缩标准。PC以及服务器中通常采用GZIP数据压缩标准,而在移动及物联网终端通常采用LZ4数据压缩标准。各种终端的数据,需要上载存储到数据中心。LZ4算法可以快速的对终端生成的数据压缩及封装,数据中心更注重压缩率,通常采用GZIP算法来压缩及封装数据。这样,终端数据与服务器之间存在一个“格式鸿沟”,因此数据落盘前,需要进行数据格式转换,即将LZ4格式文件转换为GZIP格式文件。目前,LZ4格式文件向GZIP格式文件转换的方案大多采用完全解压缩后再压缩的方式。这样的转换方案的转换速度较慢,且需要存储完全解压缩之后得到的源文件。
有鉴于此,如何提高转换速度已成为本领域技术人员亟待解决的技术问题。
发明内容
本申请的目的是提供一种LZ4格式文件转换为GZIP格式文件的方法,能够极大的提高格式转换速度。本申请的另一个目的是提供一种LZ4格式文件转换为GZIP格式文件的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为解决上述技术问题,本申请提供了一种LZ4格式文件转换为GZIP格式文件的方法,包括:
解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
可选的,所述解析LZ4格式文件的帧头与帧尾,得到目标语法元素包括:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
可选的,所述构建GZIP格式文件头包括:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
可选的,所述根据所述目标语法元素构建GZIP格式文件尾包括:
将所述GZIP格式文件尾的源数据校验码设置为与所述LZ4格式文件的帧尾的所述源数据校验码一致;
将所述GZIP格式文件尾的源数据字符数设置为与所述LZ4格式文件的所述帧描述符中的源文件数据长度一致。
可选的,还包括:
根据所述LZ4格式文件的数据块设置相应的所述deflate格式的数据块的块头信息。
为解决上述技术问题,本申请还提供了一种LZ4格式文件转换为GZIP格式文件的装置,包括:
第一解析模块,用于解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
构建模块,用于构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
第二解析模块,用于解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
编码模块,用于对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
封装模块,用于封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
可选的,所述第一解析模块具体用于:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
可选的,所述构建模块具体用于:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
为解决上述技术问题,本申请还提供了一种LZ4格式文件转换为GZIP格式文件的设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上任一项所述的LZ4格式文件转换为GZIP格式文件的方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的LZ4格式文件转换为GZIP格式文件的方法的步骤。
本申请所提供的LZ4格式文件转换为GZIP格式文件的方法,包括:解析LZ4格式文件的帧头与帧尾,得到目标语法元素;构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
可见,较之完全解码再重新编码的传统转换方案,本申请所提供的LZ4格式文件转换为GZIP格式文件的方法,解析LZ4格式文件的数据块,直接得到原文、匹配长度以及偏移距离,并对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块,由此,直接利用LZ4格式文件的匹配对(匹配长度与偏移距离),而不是在完全解码得到源文件后,重新搜索匹配对,几乎相当于跳过了传统转换方案的编码流程,由此极大的提高了转换速度。
本申请所提供的LZ4格式文件转换为GZIP格式文件的装置、设备以及计算机可读存储介质均具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种LZ4格式文件转换为GZIP格式文件的方法的流程示意图;
图2为本申请实施例所提供的一种GZIP格式文件头的结构示意图;
图3为本申请实施例所提供的一种GZIP格式文件尾的结构示意图;
图4为本申请实施例所提供的一种压缩数据块的结构示意图;
图5为本申请实施例所提供的一种LZ4格式文件转换为GZIP格式文件的装置的示意图;
图6为本申请实施例所提供的一种LZ4格式文件转换为GZIP格式文件的设备的流程示意图。
具体实施方式
本申请的核心是提供一种LZ4格式文件转换为GZIP格式文件的方法,能够极大的提高格式转换速度。本申请的另一个核心是提供一种LZ4格式文件转换为GZIP格式文件的装置、设备以及计算机可读存储介质,均具有上述技术效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参考图1,图1为本申请实施例所提供的一种LZ4格式文件转换为GZIP格式文件的方法的流程示意图,参考图1所示,该方法包括:
S101:解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
S102:构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
具体的,LZ4格式文件转换为GZIP格式文件涉及语法元素的转码与压缩数据的重新编码。步骤S101与S102旨在完成语法元素的转码。目标语法元素是指GZIP格式文件所需的语法元素。GZIP格式文件中的语法元素的个数、种类与LZ4格式文件中的语法元素的个数、种类不完全相同,部分LZ4格式文件中的语法元素并不是GZIP格式文件中的语法元素,因此在进行LZ4格式文件向GZIP格式文件的转化时,解析LZ4格式文件中的目标语法元素,得到GZIP格式文件所需的语法元素。进而,构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾。
其中,在一种具体的实施方式中,所述解析LZ4格式文件的帧头与帧尾,得到目标语法元素包括:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
具体而言,LZ4格式涉及的语法元素主要分为三个级别:帧级、块级以及序列级。通常,一个LZ4格式的压缩文件就是一帧,且每帧大体划分为帧头、压缩数据块以及帧尾。其中,帧头由Magic number与Frame Descriptor两个语法元素构成。Magic number是LZ4格式文件的标识码,其是一个32bit的数字,数值必须等于0x184D2204。Frame Descriptor是帧描述符,是解码LZ4文件所需的控制参数的集合。帧描述符的数据结构如表1所示:
表1
FLG | BD | (Content Size) | (Dictionary ID) | HC |
1byte | 1byte | 0-8bytes | 0-4bytes | 1byte |
可以分解为如下语法元素:
BD:用单字节数字标识,用来标识帧内部的块数据的长度的最大值。
Content Size:8个字节,为可选项,用来标明源文件的数据长度,即解压长度。
Dictionary ID:4个字节,为可选项。用来标明解码数据所依赖的字典的ID。
HC:1个字节,用以表示压缩块中的最大值。
FLG:1个字节,FLG的结构如表2所示:
表2
BitNb | 7-6 | 5 | 4 | 3 | 2 | 1 | 0 |
FieldName | Version | B.Indep | B.Checksum | C.Size | C.Checksum | Reserved | DictID |
FLG的每个bit的含义如下(由高位到低位):
Version Number:由FLG的6-7bit构成,当前Version Number的值必须为01;
Block-Independence-flag:标明块与块之间的链接关系,“1”表示没有关联独立解码,“0”表示非独立关系,后块解码需要依赖于前块的数据。
Block-checksum-flag:标明压缩块数据结尾是否带有压缩数据的校验码。
Content-Size-flag:标明帧描述符中是否含有元素Content Size。
Content-checksum-flag:标明帧数据结尾是否带有源数据的校验码Contentchecksum。
Dictionary-ID-flag:如果此项值为1,那么需要帧描述符中指明解码数据所需要的字典ID。
帧尾包含两个语法元素:End mask与CRC32,两者都是32bit的数字。其中End mask的值恒为0x00000000,CRC32为帧数据校验码。
LZ4格式文件的帧头中的帧描述符中的Content Size以及LZ4格式文件的帧尾中的源数据校验码为GZIP格式文件所需,故可只解析所述LZ4格式文件的帧头中的帧描述符与LZ4格式文件的帧尾中的源数据校验码。对于其他GZIP不需要的语法元素则可不做解析,以此减少解析次数,提高转换速度。
另外,在一种具体的实施方式中,所述构建GZIP格式文件头包括:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
所述根据所述目标语法元素构建GZIP格式文件尾包括:
将所述GZIP格式文件尾的源数据校验码设置为与所述LZ4格式文件的帧尾的所述源数据校验码一致;
将所述GZIP格式文件尾的源数据字符数设置为与所述LZ4格式文件的所述帧描述符中的源文件数据长度一致。
具体而言,GZIP格式文件大致可以划分为三个部分:GZIP格式文件头、若干个压缩数据块(GZIP协议中压缩块采用Deflate封装)以及GZIP格式文件尾。
GZIP格式文件头的结构如图2所示,包含以下语法元素:
1)GZIP格式校验码,总计2个字节(ID1与ID2),两个字节都必须为固定值。其中,ID1=31(0x1F),ID2=139(0x8B)。
2)压缩算法标识符CM,总计1个字节。当前GZIP的压缩算法仅仅支持Deflate,因此CM可看作固定值(0x08)。
3)标志位FLG,总计1个字节。其中,FLG的每个bit表示的信息如下:
bit 0FTEXT-指示文本数据(源文件)是否是文本文件,LZ4协议没有相关的标志bit,因此将此项设置为“0”
bit 1FHCRC-指示存在CRC16头校验字段,由于最新的GZIP协议不支持此项,故可将FHCRC bit设置为“0”
bit 2FEXTRA-指示存在可选项字段,LZ4协议没有相关的标志bit,所以将FEXTRA设置为“0”。
bit 3FNAME-指示存在原文件名字段,LZ4协议没有相关的标志bit,所以将FNAME设置为“0”,转码后文件不存在文件字段。
bit 4FCOMMENT-指示存在注释字段,LZ4协议没有相关的标志bit,所以将FCOMMENT设置为“0”,转码后文件不存在FCOMMENT。
bit 5-7reserved全部置为0。
4)源文件时间戳MTIME,4个字节。由于LZ4协议格式中没有相关内容,我们的转码器会的MTIME的值设置为当前时间。
5)附加标志XFL以及操作系统(文件系统)标志符OS。XFL与OS都用1个字节表征。由于LZ4协议格式中没有相关内容,转码器会将这两项全部是设置为“0x00”。
GZIP文件尾的结构如图3所示,包含两个语法元素:源数据校验码CRC32与源数据内容的数量(字节数)。
构建GZIP文件尾时,将GZIP文件尾中的源数据校验码CRC32直接赋值为与LZ4格式中的Content checksum一致。GZIP文件尾中的源数据字符数ISIZE直接赋值为与LZ4格式中content size一致。
S103:解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
S104:对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
具体的,步骤S103与S104旨在完成压缩数据的重新编码。LZ4协议中的压缩数据块由三部分构成:块头、sequences即序列以及块尾。其中,块头只有一个语法元素:BlockSize,用来表述压缩块的字节数。Block Size最高位(31bit)表示当前块的形式:“1”表示非压缩形式,“0”表示压缩形式。块尾Block Checksum是一个32bit的数字,表述块压缩数据的校验值,Block Checksum是条件选项,依赖于LZ4格式文件的帧头中FLG中的Block-checksum-flag。通常每个压缩数据块中存在多个序列,其格式如图4所示。
Sequence是LZ4协议里的最小数据单元。Sequence可分为五个部分,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(原文):若干个原文字符,字符的数量头Literal length表明。Offset(偏移距离),用两个字节表示重复数据的偏移量。Match length bytes(附加匹配长度字节),如果Token的低4位的值小于15,则不存在Match length bytes,如果Token的低4位的值为15,表示存在Match length bytes。
本申请旨在直接利用LZ4格式文件中的Match copy(匹配对)编码生成GZIP格式文件,以跳过编码算法中的“搜索Match copy”流程。事实上编码器绝大部分计算资源都用在“搜索Match copy”流程,因此直接利用LZ4格式文件中的Match copy(匹配对)编码生成GZIP格式文件,几乎相当跳过编码流程,从而可以极大的提高格式转换速度。为此,本申请解析LZ4格式文件的压缩数据块中所有Sequence的语法元素,包括Literal-length,Literals,offset,match-length。其中Literals对应Deflate协议中的原文符号,match-length对应Deflate协议中的length符号,offset对应Deflate协议中的Distance符号。Deflate协议中没有Literal-length对应的符号,因此对此仅做解析而不做转换。
Deflate协议中,采用Huffman码编上述符号。首先分类统计这些符号,通过构建Huffman树来生成Huffman码,随后利用Huffman码编解析得到的Literals、offset以及match-length三种类型的符号。其中,依据Deflate协议,Literals,length采用同一棵Huffman树编码,offset独立用一棵Huffman树编码。
解码端解码Deflate数据时,需要一个Huffman码表,这个Huffman码表与编码端的码表一致。因此Deflate协议中需要将Huffman码表封装编码。Deflate协议中采用游程编码方式编码Huffman树每个叶子的码长,码字根据协议生成。利用以上生成的Huffman码,按照自然顺序依次编码符号。块数据编码完成后需要在结束位置紧跟一个结束符。
对于如何构建Huffman树、如何进行Huffman编码等关于Huffman编码技术的内容,本申请在此不做赘述,参考现有的Huffman编码技术即可。
LZ4格式的每个压缩数据块经转换后都会生成一个Deflate格式的数据块。Deflate头仅存在3bit的数据,具体如下:
a)BFINAL 1bit:1表征当前deflate为最后一个block。
b)BTYPE 2bit:数据压缩编码方式,BTYPE的取值及含义:0表示没有压缩;1表示静态Huffman编码;2表示动态Huffman编码。
进一步,还包括:
根据所述LZ4格式文件的数据块设置相应的所述deflate格式的数据块的块头信息。
具体而言,如果LZ4格式的压缩数据块为最后一块,那么将Deflate头的BFINALbit设置为“1”;反之,设置将BFINAL bit设置为“0”。如果LZ4格式的压缩数据块的块头的Block-size的最高位为“1”,那么将Deflate头的BTYPE bits设置为“00”;反之,设置将BTYPE bit设置为“10”。
S105:封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
具体的,在构建GZIP格式文件头、GZIP格式文件尾以及直接利用LZ4格式文件中的Match copy(匹配对)编码生成deflate格式的数据块之后,进一步,封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
综上所述,较之完全解码再重新编码的传统转换方案,本申请所提供的LZ4格式文件转换为GZIP格式文件的方法,解析LZ4格式文件的数据块,直接得到原文、匹配长度以及偏移距离,并对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块,由此,直接利用LZ4格式文件的匹配对(匹配长度与偏移距离),而不是在完全解码得到源文件后,重新搜索匹配对,几乎相当于跳过了传统转换方案的编码流程,由此极大的提高了转换速度。
本申请还提供了一种LZ4格式文件转换为GZIP格式文件的装置,下文描述的该装置可以与上文描述的方法相互对应参照。请参考图5,图5为本申请实施例所提供的一种LZ4格式文件转换为GZIP格式文件的装置的示意图,结合图5所示,该装置包括:
第一解析模块10,用于解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
构建模块20,用于构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
第二解析模块30,用于解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
编码模块40,用于对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
封装模块50,用于封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
在上述实施例的基础上,可选的,所述第一解析模块10具体用于:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
在上述实施例的基础上,可选的,所述构建模块20具体用于:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
在上述实施例的基础上,可选的,所述构建模块20具体用于:
将所述GZIP格式文件尾的源数据校验码设置为与所述LZ4格式文件的帧尾的所述源数据校验码一致;
将所述GZIP格式文件尾的源数据字符数设置为与所述LZ4格式文件的所述帧描述符中的源文件数据长度一致。
在上述实施例的基础上,可选的,还包括:
设置模块,用于根据LZ4格式文件的数据块设置相应的所述deflate格式的数据块的头部信息。
本申请所提供的LZ4格式文件转换为GZIP格式文件的装置,解析LZ4格式文件的数据块,直接得到原文、匹配长度以及偏移距离,并对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块,由此,直接利用LZ4格式文件的匹配对(匹配长度与偏移距离),而不是在完全解码得到源文件后,重新搜索匹配对,几乎相当于跳过了传统转换方案的编码流程,由此极大的提高了转换速度。
本申请还提供了一种LZ4格式文件转换为GZIP格式文件的设备,参考图6所示,该设备包括存储器1和处理器2。
存储器1,用于存储计算机程序;
处理器2,用于执行计算机程序实现如下的步骤:
解析LZ4格式文件的帧头与帧尾,得到目标语法元素;构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
对于本申请所提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如下的步骤:
解析LZ4格式文件的帧头与帧尾,得到目标语法元素;构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
该计算机可读存储介质可以包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请所提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备以及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围。
Claims (10)
1.一种LZ4格式文件转换为GZIP格式文件的方法,其特征在于,包括:
解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
2.根据权利要求1所述的LZ4格式文件转换为GZIP格式文件的方法,其特征在于,所述解析LZ4格式文件的帧头与帧尾,得到目标语法元素包括:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
3.根据权利要求2所述的LZ4格式文件转换为GZIP格式文件的方法,其特征在于,所述构建GZIP格式文件头包括:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
4.根据权利要求2所述的LZ4格式文件转换为GZIP格式文件的方法,其特征在于,所述根据所述目标语法元素构建GZIP格式文件尾包括:
将所述GZIP格式文件尾的源数据校验码设置为与所述LZ4格式文件的帧尾的所述源数据校验码一致;
将所述GZIP格式文件尾的源数据字符数设置为与所述LZ4格式文件的所述帧描述符中的源文件数据长度一致。
5.根据权利要求4所述的LZ4格式文件转换为GZIP格式文件的方法,其特征在于,还包括:
根据所述LZ4格式文件的数据块设置相应的所述deflate格式的数据块的块头信息。
6.一种LZ4格式文件转换为GZIP格式文件的装置,其特征在于,包括:
第一解析模块,用于解析LZ4格式文件的帧头与帧尾,得到目标语法元素;
构建模块,用于构建GZIP格式文件头,并根据解析得到所述目标语法元素构建GZIP格式文件尾;
第二解析模块,用于解析所述LZ4格式文件的数据块,得到原文、匹配长度以及偏移距离;
编码模块,用于对所述原文、所述匹配长度以及所述偏移距离进行哈夫曼编码,得到deflate格式的数据块;
封装模块,用于封装所述GZIP格式文件头、所述GZIP格式文件尾以及所述deflate格式的数据块,得到所述GZIP格式文件。
7.根据权利要求6所述的LZ4格式文件转换为GZIP格式文件的装置,其特征在于,所述第一解析模块具体用于:
解析所述LZ4格式文件的帧头,得到帧描述符;
解析所述LZ4格式文件的帧尾,得到源数据校验码。
8.根据权利要求6所述的LZ4格式文件转换为GZIP格式文件的装置,其特征在于,所述构建模块具体用于:
将所述GZIP格式文件头中的GZIP格式校验码的第一字节设置为第一预设值,将所述GZIP格式校验码的第二字节设置为第二预设值;
将所述GZIP格式文件头中的压缩算法标识符设置为第三预设值;
将所述GZIP格式文件头中的标志位的各比特位设置为零;
将所述GZIP格式文件头中的源文件时间戳设置为当前时间;
将所述GZIP格式文件头中的附加标志以及操作系统标志均设置为第四预设值。
9.一种LZ4格式文件转换为GZIP格式文件的设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至5任一项所述的LZ4格式文件转换为GZIP格式文件的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述的LZ4格式文件转换为GZIP格式文件的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166379.XA CN113986820A (zh) | 2021-09-30 | 2021-09-30 | 一种lz4格式文件转换为gzip格式文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111166379.XA CN113986820A (zh) | 2021-09-30 | 2021-09-30 | 一种lz4格式文件转换为gzip格式文件的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113986820A true CN113986820A (zh) | 2022-01-28 |
Family
ID=79737570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111166379.XA Pending CN113986820A (zh) | 2021-09-30 | 2021-09-30 | 一种lz4格式文件转换为gzip格式文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113986820A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116318171A (zh) * | 2023-05-15 | 2023-06-23 | 北京爱芯科技有限公司 | Lz4解压缩硬件加速实现/压缩方法、装置、介质及芯片 |
-
2021
- 2021-09-30 CN CN202111166379.XA patent/CN113986820A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116318171A (zh) * | 2023-05-15 | 2023-06-23 | 北京爱芯科技有限公司 | Lz4解压缩硬件加速实现/压缩方法、装置、介质及芯片 |
CN116318171B (zh) * | 2023-05-15 | 2023-10-03 | 北京爱芯科技有限公司 | Lz4解压缩硬件加速实现/压缩方法、装置、介质及芯片 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9077368B2 (en) | Efficient techniques for aligned fixed-length compression | |
US11044495B1 (en) | Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation | |
US8520958B2 (en) | Parallelization of variable length decoding | |
KR100614677B1 (ko) | 구조화된 문서를 압축/복원하기 위한 방법 | |
CN107395209B (zh) | 数据压缩方法、数据解压缩方法及其设备 | |
US7688233B2 (en) | Compression for deflate algorithm | |
US20110219357A1 (en) | Compressing source code written in a scripting language | |
EP1803225A1 (en) | Adaptive compression scheme | |
CN108156173A (zh) | 一种json数据包的动态无损压缩方法 | |
US10735025B2 (en) | Use of data prefixes to increase compression ratios | |
CN112165331A (zh) | 数据压缩方法及其装置、数据解压方法及其装置、存储介质及电子设备 | |
EP2863593A1 (en) | A method, apparatus and computer program for modifying messages in a communications network | |
CN105052040A (zh) | 多流压缩与解压的方法与系统 | |
EP2790378B1 (en) | A method, apparatus and computer program for adding content to a data container | |
JP2004508647A (ja) | 構造化文書の圧縮/解凍方法 | |
CN110518917A (zh) | 基于Huffman编码的LZW数据压缩方法及系统 | |
US20120243551A1 (en) | Efficient Processing of Compressed Communication Traffic | |
CN113986820A (zh) | 一种lz4格式文件转换为gzip格式文件的方法 | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
CN114614829A (zh) | 卫星数据帧的处理方法、装置、电子设备和可读存储介质 | |
CN114006619A (zh) | 一种gzip格式文件转换为lz4格式文件的方法 | |
CN115865274A (zh) | 一种数据压缩方法、数据解压缩方法及数据压缩装置 | |
US10931303B1 (en) | Data processing system | |
US7930435B2 (en) | Hub and spoke compression | |
JP6428936B2 (ja) | 情報処理装置、情報処理方法および情報処理プログラム |
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 |