CN103023511B - 一种应用的压缩编码方法及装置 - Google Patents
一种应用的压缩编码方法及装置 Download PDFInfo
- Publication number
- CN103023511B CN103023511B CN201210517940.9A CN201210517940A CN103023511B CN 103023511 B CN103023511 B CN 103023511B CN 201210517940 A CN201210517940 A CN 201210517940A CN 103023511 B CN103023511 B CN 103023511B
- Authority
- CN
- China
- Prior art keywords
- character
- file
- compression
- resource file
- coding
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000005056 compaction Methods 0.000 title abstract 2
- 238000007906 compression Methods 0.000 claims abstract description 131
- 230000006835 compression Effects 0.000 claims abstract description 128
- 238000009434 installation Methods 0.000 claims abstract description 28
- 238000013507 mapping Methods 0.000 claims description 19
- 238000013139 quantization Methods 0.000 claims description 7
- 125000006850 spacer group Chemical group 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000006243 chemical reaction Methods 0.000 claims description 3
- 230000008447 perception Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 9
- 108091081062 Repeated sequence (DNA) Proteins 0.000 description 7
- 230000006870 function Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
一种应用的压缩编码方法,所述方法包括:解析应用的安装包,获取所述应用的字节码和资源文件;分别对所述字节码和资源文件进行压缩编码,再组装成形成压缩文件;其中,利用LZ77算法对所述字节码进行压缩编码。对字节码和资源文件分别采用不同的压缩方式编码,就能达到最大的压缩比,应用安装包越小,在相同下载条件下,用户花费的时间越短,需要支付的无线网络数据流量费用越低。
Description
技术领域
本发明涉及移动互联网领域,尤其涉及一种应用的压缩编码方法及装置。
背景技术
随着智能终端功能的日益强大,智能终端已逐渐融入到人们的日常生活之中,用户可以通过互联网自行下载安装各种应用,以此来扩充终端功能。然而,因为目前应用的安装包都很大,一般在几兆至几十兆之间不等,而移动通信网络的数据传输速率为几千字节至几十千字节每秒之间,按照这种速率计算,如果用户不使用WiFi的话,就要花费几分钟甚至十几分钟的时间才能下载一个普通应用。
用户在花费大量等待时间的同时,还要支付由此产生的数据流量费用。此外,由于下载等待的时间较长,用户可能会手动终止下载过程,在这种情况下,用户不仅没有下载到其期望的应用,还要支付本次下载产生的数据流量费用,极大地影响了用户体验。
发明内容
本发明实施例应用的压缩编码方法及装置,提高了应用安装包的压缩比,使安装包尽量小就能降低用户下载安装包的时间。
为此,本发明实施例提供如下技术方案:
一种应用的压缩编码方法,所述方法包括:
解析应用的安装包,获取所述应用的字节码和资源文件;
分别对所述字节码和资源文件进行压缩编码,再组装成形成压缩文件;其中,利用LZ77算法对所述字节码进行压缩编码。
优选的,对所述资源文件进行压缩编码,具体包括:
根据所述资源文件的文件头判断所述资源文件是否为特定资源文件;
如果为特定资源文件,则通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
如果为非特定资源文件,则通过通用压缩算法进行压缩编码。
优选的,所述特定资源文件为图片文件、视频文件或者音频文件,则压缩所述特定资源文件的方式包括:
利用差分脉冲调制编码、DEFLATE算法、LZW算法对所述图片文件进行压缩编码;
利用离散余弦变换以及运动补偿预测技术对所述视频文件进行压缩编码;
利用子带编码、MDCT、感知模型、低比特率量化、量化以及哈夫曼编码对所述音频文件进行压缩编码;
所述非特定资源文件为XML文件或者文本文件,则所述通用压缩算法为LZMA算法。
优选的,所述利用LZ77算法对所述字节码进行压缩编码,具体包括:
判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符;
如果相匹配,则继续查找最长的匹配字符串,并输出指针(off、len、c),其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符;如果未匹配,则输出指针(off、len、d),其中d表示所述当前待编码字符;
将所述滑动窗向后移动(len+1)个字符,继续执行所述判断当前待编码字符是否与滑动窗内的已编码字符相匹配的步骤,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
优选的,所述利用LZ77算法对所述字节码进行压缩编码,具体包括:
将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码;
在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
优选的,根据字节码的大小、字符序列出现的位置和字符序列的长度,设置所述字符序列编码成的指针和长度的ASCII码表示方式。
优选的,如果存在至少两种所述指针和长度的ASCII码表示方式,则所述字符序列的编码还包括标识位,所述标识位用于表示采用的ASCII码表示方式。
一种应用的压缩编码装置,所述装置包括:
解析单元,用于解析应用的安装包,获取所述应用的字节码和资源文件;
第一压缩单元,用于对所述资源文件进行压缩编码;
第二压缩单元,用于利用LZ77算法对所述字节码进行压缩编码;
组装单元,用于组装所述第一压缩单元和第二压缩单元输出的文件为压缩文件。
优选的,所述第一压缩单元具体包括:
识别单元,用于根据所述资源文件的文件头判断所述资源文件是否为特定资源文件;
第一压缩子单元,用于在所述资源文件为特定资源文件时,通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
第二压缩子单元,用于在所述资源文件为非特定资源文件时,通过通用压缩算法进行压缩编码。
优选的,所述第二压缩单元具体包括:
匹配单元,用于判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符;
指针输出单元,用于在所述匹配单元判断为是时,继续查找最长的匹配字符串,并输出指针(off、len、c),在所述匹配单元判断为否时,输出指针(off、len、d),其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符,d表示所述当前待编码字符;
移动单元,用于将所述滑动窗向后移动(len+1)个字符,通知所述匹配单元继续匹配字符,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
优选的,所述第二压缩单元具体包括:
映射单元,用于将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码;
编码单元,用于在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
优选的,根据字节码的大小、字符序列出现的位置和字符序列的长度,设置所述字符序列编码成的指针和长度的ASCII码表示方式。
优选的,如果存在至少两种所述指针和长度的ASCII码表示方式,则所述编码单元对所述字符序列的编码还包括标识位,所述标识位用于表示采用的ASCII码表示方式。
本发明实施例的应用的压缩编码方法及装置,解析应用的安装包,提取其中较大的字节码和资源文件,对二者分别采用不同的压缩方式编码,以期达到最大的压缩比,应用安装包越小,在相同下载条件下,用户花费的时间越短,需要支付的无线网络数据流量费用越低。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本发明实施例应用的压缩编码方法的流程图;
图2是本发明实施例中对资源文件进行压缩编码的流程图;
图3是本发明实施例中对字节码进行压缩编码实施例1的流程图;
图4是本发明实施例中对字节码进行压缩编码实施例2的流程图;
图5是本发明实施例中对字节码进行压缩编码实施例2的压缩映射关系图;
图6是本发明实施例应用的压缩编码装置的示意图;
图7是本发明实施例中第一压缩单元的示意图;
图8是本发明实施例中第二压缩单元实施例1的示意图;
图9是本发明实施例中第二压缩单元实施例2的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和实施方式对本发明实施例作进一步的详细说明。
参见图1,示出了本发明实施例应用的压缩编码方法的流程图,包括:
步骤101,解析应用的安装包,获取所述应用的字节码和资源文件。
以Android应用的安装包为例,目前用户从应用商店下载的应用安装包,一般只是简单地将可执行代码和资源文件组合在一起形成zip格式的压缩包,压缩比低,下载时间长。
安装包中的执行程序是基于dalvik虚拟机的字节码,Dalvik虚拟机则是基于寄存器的,指令一般较大;另外,安装包中的资源文件格式又很多,不同格式的文件又具有各自的特点。考虑到上述因素,本发明实施例要对字节码和资源文件这两部分最占空间的文件分别进行压缩编码,通过与二者最匹配的压缩算法最大程度的压缩安装包。因此,在得到一个安装包之后,要先解析该安装包获取其包含的字节码和资源文件,例如解析Android安装包,大致可得到以下几种文件:classes.dex,AndroidManifest.xml(工程描述文件,在压缩过程中可忽略),res和assets文件夹以及其它文件夹下的各种xml文件、图片、视频或者音频等资源文件,其中classes.dex即为字节码,xml文件、图片、视频或者音频为资源文件,本发明即是对这两种最占空间的文件进行压缩。
需要说明的是,为了进一步提高安装包的压缩比,在解析获得字节码后,可以通过baksmali.jar工具将classes.dex文件转换为dalvik文件。这主要是因为,Classes.dex文件是一种基于字节码的二进制文件,dalvik文件则是文本文件,且dalvik文件更易于压缩处理,因此在压缩编码之前可先进行文件格式转换。
步骤102,分别对所述字节码和资源文件进行压缩编码,再组装成形成压缩文件;其中,利用LZ77算法对所述字节码进行压缩编码。
为了实现本发明目的,针对字节码和资源文件采用不同的压缩编码方式,尽量提高二者的压缩比,也就能提高由二者构成的压缩文件的压缩比。下面分别对字节码和资源文件的压缩编码过程进行解释说明。
对于资源文件来说,其可进一步细分为特定资源文件(例如图片文件、视频文件、音频文件等)和非特定资源文件(例如XML文件、文本文件等),对于能区分识别出的特定资源文件,可以采用与其最为匹配的特定压缩算法实现压缩编码过程,对于其它不能识别的非特定资源文件,则可采用通用算法对这部分文件实现压缩编码过程。
参见图2,示出了本发明实施例中对资源文件进行压缩编码的流程图,可包括:
步骤201,根据资源文件的文件头判断所述资源文件是否为特定资源文件;
步骤203,如果为特定资源文件,则通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
步骤203,如果为非特定资源文件,则通过通用压缩算法进行压缩编码。
特定资源文件都有特定的文件头标识,因此通过文件头就可对解析安装包获得的资源文件进行分类,如果是可识别的文件头,则将其作为特定资源文件看待,否则将其视为非特定资源文件,对于非特定资源文件就可采用LZMA算法进行压缩编码。
而对于特定文件资源来说,在进行上述初步分类之后,还可根据文件头的具体类型进一步细分,例如细分为图片文件、视频文件或者音频文件,则相应的压缩编码方式可以为:如果是图片文件,则利用差分脉冲调制编码、DEFLATE算法、LZW算法进行压缩编码;如果是视频文件,则利用离散余弦变换以及运动补偿预测技术进行压缩编码;如果是音频文件,则利用子带编码、MDCT、感知模型(即压缩感知)、低比特率量化、量化以及哈夫曼编码进行压缩编码。
需要说明的是,在压缩资源文件时,也可以不对特定资源文件和非特定资源文件进行区别处理,而是对所有资源文件都采用相同的通用压缩方式,例如采用LZW算法,同样可以相对现有技术提高安装包的压缩比。
对于字节码来说,可以通过LZ77算法完成压缩编码过程,具体实现方式如下。
参见图3,示出了本发明实施例中对字节码进行压缩编码实施例1的流程图,可包括:
步骤301,判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符。
步骤302,如果相匹配,则继续查找最长的匹配字符串,并输出指针(off、len、c),继续执行步骤304;其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符。
步骤303,如果未匹配,则输出指针(off、len、d),其中d表示所述当前待编码字符,继续执行步骤304。
步骤304,将所述滑动窗向后移动(len+1)个字符,继续执行步骤301,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
下面结合实例对上述编码过程进行简单介绍。
若滑动窗的窗口大小为10个字符,窗内已编码的字符是abcdbbccaa,窗外未编码的字符为abaeaaabaee,由上述情况可知,当前待编码字符为a,滑动窗内存在与其相匹配的已编码字符a,因此可以继续查找是否存在更长的匹配字符串,经比对发现窗外未编码字符与窗内已编码字符之间最长的匹配字符串为ab,与该匹配字符串相邻的下一个未编码字符为a,因此可以输出指针(0,2,a)。
接着,将滑动窗向后移动3(2+1=3)个字符,则窗内已编码字符为dbbccaaaba,窗外未编码字符为eaaabaee,由此可知,当前待编码字符为e,经比对发现窗内已编码字符中不存在与e相匹配的字符,因此可以输出指针(0,0,e)。
然后,将滑动窗向后移动1(0+1=1)个字符,则窗内已编码字符为bbccaaabae,窗外未编码字符为aaabaee,经比对发现最长的匹配字符串为aaabae,因此可以输出指针(4,6,e),至此就完成对所有未编码字符的编码过程。
利用上述方法编码之后,只需按顺序记录已编码字符abcdbbccaa、指针三元组(0,2,a)、(0,0,e)、(4,6,e)即可,通过这种指针方式实现对文件数据的压缩,相对逐个字符的压缩文件来说,就可以大大提高文件的压缩比。利用这种方式解压的过程也很简单,只要如上述压缩过程一样,维护好滑动的窗口,随着指针三元组的不断输入,就可以在窗口中找到相应的匹配字符串,缀上后继字符c或者当前待编码字符d输出即可还原出原始数据。
根据上述示例体现的压缩过程可知,偏移量off是随着字符串的匹配情况而改变的,为了简化压缩编码的过程,还可使偏移值off均匀分布,通过固定位数表示偏移量。位数bitnum=upper_bound(log2(MAX_WND_SIZE)),其中MAX_WND_SIZE为滑动窗的窗口大小,如果窗口大小为4096,则用12位就可以对偏移编码,如果窗口大小为2048,则用11位就可以对偏移编码。这种通过固定位数偏移量进行压缩编码的过程与上述可变偏移量的编码过程相同,此处不再赘述。
参见图4,示出了本发明实施例中对字节码进行压缩编码实施例2的流程图,可包括:
步骤401,将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码。
步骤402,在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
下面结合实例对上述编码过程进行简单介绍。
待编码文件为:thebrownfoxjumpedoverthebrownfoxyjumpingfrog,文件的长度是53个八位组共计424bit(53*8bit=424bit)。按照从左向右的顺序对上述文件进行压缩编码。
初始时,每个字符被映射成9bit的编码,包括二进制的“1”(用于间隔每个字符映射的8bitASCII码)和该字符的8bitASCII码。在映射编码过程中,要不断查找判断是否存在重复的序列,即待编码的字符中是否有与已编码字符相同的字符。当发现一个重复字符时,并不直接对该重复字符编码,而是继续扫描直到该重复序列终止,也就是说在出现一次字符重复现象时,应尽量包括尽可能多的字符。
按照上述发现重复序列的过程,我们发现的第一个序列是thebrownfox,对于这个序列不需要如上述将每个字符映射成9bit编码,而是将其编码成指向前一个已编码序列的指针和重复序列的长度。前一个已编码序列thebrownfox出现在本重复序列的26个字符之前,序列长度是13个字符,因此可将其编码成(26,13),或者采用ASCII码表示的000110101101(通过8bit表示指针,4bit表示序列长度,共计12bit)。
接着,可以继续压缩文件的剩余部分“y”,将其映射成9bit的编码。对于后续由一个空格和jump组成的序列,亦可按照上述指针和长度的方式进行编码为(27,5),或者采用ASCII码表示的000110110101(仍然是通过8bit表示指针,4bit表示序列长度)。最后,比对剩余的字符序列ingfrog,发现已编码字符中不存在重复序列,因此将其包含的每个字符映射成9bit编码,最终完成对上述文件的编码过程,可参见图5所示的压缩映射关系图。
利用本发明实施例提供的方法对文件进行压缩后,压缩形成的报文由35个9bit字符和两个包含指针和长度的编码组成,总长度为35*9+2*12=339bit,与原来未压缩的长度为424bit的报文相比,压缩比为1.25。
需要说明的是,在上述示例中采用的是8bit指针和4bit长度对重复序列进行的编码,在实际应用中,对重复字符序列编码成的指针和长度所采用的ASCII码表示方式可以有多种,这主要取决于字节码的大小、字符序列出现的位置和字符序列的长度。可以根据实际需要缩短或增加指针和长度的编码位数,例如可以为6bit指针和4bit长度、或者12bit指针和6bit长度,本发明对此不做限定,只要能准确表示出重复的未编码字符序列与重复的已编码字符序列之间的偏移量以及重复字符序列的长度即可。
基于上述可能会存在多种ASCII码表示方式的情况,在对重复序列进行编码时,还需要设置标识位,通过标识位明确当前编码采用的是哪种ASCII码表示方式。例如,存在以下两种编码方式对重复字符序列编码:8bit指针和4bit长度、12bit指针和6bit长度,相应地可以用2bit的首部来表示这两种编码方式,00表示8bit指针和4bit长度,01表示12bit指针和6bit长度。仍以上述文件的编码过程为例,对于thebrownfox就会被编码成00000110101101(共计14bit),对于空格和jump则被编码成00000110110101,这样上述文件压缩形成的报文的总长度为35*9+2*14=343bit,与原来未压缩的长度为424bit的报文相比,压缩比为1.24。
参见图6,示出了本发明实施例应用的压缩编码装置的示意图,包括:
解析单元601,用于解析应用的安装包,获取所述应用的字节码和资源文件;
第一压缩单元602,用于对所述资源文件进行压缩编码;
第二压缩单元603,用于利用LZ77算法对所述字节码进行压缩编码;
组装单元604,用于组装所述第一压缩单元和第二压缩单元输出的文件为压缩文件。
第一压缩单元和第二压缩单元按照本发明方法对资源文件和字节码进行压缩编码后,输出到组装单元,由组装单元将二者组装形成压缩文件。用户即可将其下载到手持的智能终端,由于按照本发明实施例形成的压缩文件的压缩比较高,因此可以大幅降低用户的下载时间。需要说明的是,在用户下载压缩文件的同时,还会将压缩该文件采用的编码方式下发给智能终端,这样终端就可通过压缩算法的逆运算将压缩文件还原成原始的应用安装包,无障碍的实现对应用的下载和安装。当然,为了使用户正常使用压缩文件,本发明实施例的压缩过程实现的是无损压缩。
参见图7,示出了本发明实施例中第一压缩单元的示意图,包括:
识别单元701,用于根据所述资源文件的文件头判断所述资源文件是否为特定资源文件;
第一压缩子单元702,用于在所述资源文件为特定资源文件时,通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
第二压缩子单元703,用于在所述资源文件为非特定资源文件时,通过通用压缩算法进行压缩编码。
参见图8,示出了本发明实施例中第二压缩单元实施例1的示意图,包括:
匹配单元801,用于判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符;
指针输出单元802,用于在所述匹配单元判断为是时,继续查找最长的匹配字符串,并输出指针(off、len、c),在所述匹配单元判断为否时,输出指针(off、len、d),其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符,d表示所述当前待编码字符;
移动单元803,用于将所述滑动窗向后移动(len+1)个字符,通知所述匹配单元继续匹配字符,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
参见图9,示出了本发明实施例中第二压缩单元实施例2的示意图,包括:
映射单元901,用于将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码;
编码单元902,用于在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
本发明方案可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明方案,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上对本发明实施例进行了详细介绍,本文中应用了具体实施方式对本发明进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及设备;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种应用的压缩编码方法,其特征在于,所述方法包括:
解析应用的安装包,获取所述应用的字节码和资源文件;
分别对所述字节码和资源文件进行压缩编码,再组装成形成压缩文件;其中,利用LZ77算法对所述字节码进行压缩编码;
其中,在所述分别对所述字节码和资源文件进行压缩编码之前,对所述字节码进行文件格式转换,使得所述字节码容易被压缩处理;
其中,对所述资源文件进行压缩编码,具体包括:
根据所述资源文件的文件头判断所述资源文件是否为特定资源文件;
如果为特定资源文件,则通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
如果为非特定资源文件,则通过通用压缩算法进行压缩编码;
其中,
所述特定资源文件为图片文件、视频文件或者音频文件,则压缩所述特定资源文件的方式包括:
利用差分脉冲调制编码、DEFLATE算法、LZW算法对所述图片文件进行压缩编码;
利用离散余弦变换以及运动补偿预测技术对所述视频文件进行压缩编码;
利用子带编码、MDCT、感知模型、低比特率量化、量化以及哈夫曼编码对所述音频文件进行压缩编码;
所述非特定资源文件为XML文件或者文本文件,则所述通用压缩算法为LZMA算法。
2.根据权利要求1所述的方法,其特征在于,所述利用LZ77算法对所述字节码进行压缩编码,具体包括:
判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符;
如果相匹配,则继续查找最长的匹配字符串,并输出指针(off、len、c),其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符;如果未匹配,则输出指针(off、len、d),其中d表示所述当前待编码字符;
将所述滑动窗向后移动(len+1)个字符,继续执行所述判断当前待编码字符是否与滑动窗内的已编码字符相匹配的步骤,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
3.根据权利要求1所述的方法,其特征在于,所述利用LZ77算法对所述字节码进行压缩编码,具体包括:
将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码;
在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
4.根据权利要求3所述的方法,其特征在于,
根据字节码的大小、字符序列出现的位置和字符序列的长度,设置所述字符序列编码成的指针和长度的ASCII码表示方式。
5.根据权利要求4所述的方法,其特征在于,如果存在至少两种所述指针和长度的ASCII码表示方式,则所述字符序列的编码还包括标识位,所述标识位用于表示采用的ASCII码表示方式。
6.一种应用的压缩编码装置,其特征在于,所述装置包括:
解析单元,用于解析应用的安装包,获取所述应用的字节码和资源文件;
第一压缩单元,用于对所述资源文件进行压缩编码;
第二压缩单元,用于利用LZ77算法对所述字节码进行压缩编码;
组装单元,用于组装所述第一压缩单元和第二压缩单元输出的文件为压缩文件;
其中,在分别对所述字节码和资源文件进行压缩编码之前,对所述字节码进行文件格式转换,使得所述字节码容易被压缩处理;
其中,所述第一压缩单元具体包括:
识别单元,用于根据所述资源文件的文件头判断所述资源文件是否为特定资源文件;
第一压缩子单元,用于在所述资源文件为特定资源文件时,通过与所述特定资源文件相匹配的特定压缩算法进行压缩编码;
第二压缩子单元,用于在所述资源文件为非特定资源文件时,通过通用压缩算法进行压缩编码;
其中,所述特定资源文件为图片文件、视频文件或者音频文件,则压缩所述特定资源文件的方式包括:
利用差分脉冲调制编码、DEFLATE算法、LZW算法对所述图片文件进行压缩编码;
利用离散余弦变换以及运动补偿预测技术对所述视频文件进行压缩编码;
利用子带编码、MDCT、感知模型、低比特率量化、量化以及哈夫曼编码对所述音频文件进行压缩编码;
所述非特定资源文件为XML文件或者文本文件,则所述通用压缩算法为LZMA算法。
7.根据权利要求6所述的装置,其特征在于,所述第二压缩单元具体包括:
匹配单元,用于判断当前待编码字符是否与滑动窗内的已编码字符相匹配,所述当前待编码字符为所述滑动窗外的第一个未编码字符;
指针输出单元,用于在所述匹配单元判断为是时,继续查找最长的匹配字符串,并输出指针(off、len、c),在所述匹配单元判断为否时,输出指针(off、len、d),其中,off表示所述匹配字符串相对滑动窗的窗口边界的偏移量,len表示所述匹配字符串的长度,c为与所述匹配字符串相邻的下一个字符,d表示所述当前待编码字符;
移动单元,用于将所述滑动窗向后移动(len+1)个字符,通知所述匹配单元继续匹配字符,直至将所有未编码字符全部转化为指向所述滑动窗的指针。
8.根据权利要求6所述的装置,其特征在于,所述第二压缩单元具体包括:
映射单元,用于将所述字节码包含的字符依次映射成9bit的编码,所述9bit的编码包括间隔符“1”以及该字符的8bitASCII码;
编码单元,用于在映射编码过程中,如果存在与已映射编码的字符相同的字符序列,则将所述字符序列编码成指向所述已映射编码的字符的指针和所述字符序列的长度。
9.根据权利要求8所述的装置,其特征在于,
根据字节码的大小、字符序列出现的位置和字符序列的长度,设置所述字符序列编码成的指针和长度的ASCII码表示方式。
10.根据权利要求9所述的装置,其特征在于,如果存在至少两种所述指针和长度的ASCII码表示方式,则所述编码单元对所述字符序列的编码还包括标识位,所述标识位用于表示采用的ASCII码表示方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210517940.9A CN103023511B (zh) | 2012-12-05 | 2012-12-05 | 一种应用的压缩编码方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210517940.9A CN103023511B (zh) | 2012-12-05 | 2012-12-05 | 一种应用的压缩编码方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103023511A CN103023511A (zh) | 2013-04-03 |
CN103023511B true CN103023511B (zh) | 2016-06-08 |
Family
ID=47971690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210517940.9A Active CN103023511B (zh) | 2012-12-05 | 2012-12-05 | 一种应用的压缩编码方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103023511B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104113344B (zh) * | 2013-04-16 | 2017-04-12 | 晨星半导体股份有限公司 | 解压缩电路与相关的压缩方法与解压缩方法 |
CN104850561A (zh) * | 2014-02-18 | 2015-08-19 | 北京京东尚科信息技术有限公司 | 一种Android APK文件自适应压缩方法 |
CN104267998B (zh) * | 2014-10-13 | 2017-04-19 | 上海交通大学 | 基于滑动窗技术的硬件xml解析器 |
CN105740298A (zh) * | 2014-12-12 | 2016-07-06 | 北京奇虎科技有限公司 | 文件处理方法、装置及服务端设备 |
CN104811209B (zh) * | 2015-04-22 | 2017-10-17 | 北京理工大学 | 一种抗最长匹配检测的压缩文件数据嵌入方法及装置 |
CN105610447B (zh) * | 2015-10-29 | 2018-06-19 | 吴均 | 基于lz77算法的分区编码压缩方法 |
CN105447393B (zh) * | 2015-11-18 | 2018-06-01 | 国网北京市电力公司 | 用于电力系统的文件传送方法和装置 |
CN106850785A (zh) * | 2017-01-20 | 2017-06-13 | 济南浪潮高新科技投资发展有限公司 | 一种使用滑动窗口缓存的物理信息系统数据压缩传输方法 |
CN107220028B (zh) * | 2017-05-24 | 2020-05-29 | 上海兆芯集成电路有限公司 | 加速压缩方法以及使用此方法的装置 |
US10097202B1 (en) * | 2017-06-20 | 2018-10-09 | Samsung Electronics Co., Ltd. | SSD compression aware |
CN108319971A (zh) * | 2018-01-17 | 2018-07-24 | 上海爱优威软件开发有限公司 | 一种基于移动端的Camera智能识别设计方法及系统 |
CN108563795B (zh) * | 2018-05-04 | 2021-01-19 | 西安交通大学 | 一种加速压缩流量正则表达式匹配的Pairs方法 |
CN108441420A (zh) * | 2018-05-11 | 2018-08-24 | 南京思达捷信息科技有限公司 | 一种控制器下的基因检测系统及其方法 |
CN110875744B (zh) * | 2018-08-31 | 2023-06-20 | 阿里巴巴集团控股有限公司 | 编码方法及装置 |
CN110581758B (zh) * | 2019-09-16 | 2023-02-10 | 鹏城实验室 | 一种应用于网络靶场的Json文件加密方法 |
CN114070844B (zh) * | 2021-11-05 | 2024-05-14 | 统信软件技术有限公司 | 一种文件下载方法、装置、计算设备及存储介质 |
WO2024066753A1 (zh) * | 2022-09-29 | 2024-04-04 | 华为云计算技术有限公司 | 压缩数据的方法和相关装置 |
CN116192154B (zh) * | 2023-04-28 | 2023-06-27 | 北京爱芯科技有限公司 | 数据压缩及数据解压方法、装置、电子设备、芯片 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996227A (zh) * | 2009-08-13 | 2011-03-30 | 鸿富锦精密工业(深圳)有限公司 | 文档压缩系统及方法 |
CN102761540A (zh) * | 2012-05-30 | 2012-10-31 | 北京奇虎科技有限公司 | 数据压缩方法、装置、系统以及服务器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100643759B1 (ko) * | 2004-12-01 | 2006-11-10 | 삼성전자주식회사 | 문서 압축 장치 및 그 방법 |
-
2012
- 2012-12-05 CN CN201210517940.9A patent/CN103023511B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101996227A (zh) * | 2009-08-13 | 2011-03-30 | 鸿富锦精密工业(深圳)有限公司 | 文档压缩系统及方法 |
CN102761540A (zh) * | 2012-05-30 | 2012-10-31 | 北京奇虎科技有限公司 | 数据压缩方法、装置、系统以及服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN103023511A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103023511B (zh) | 一种应用的压缩编码方法及装置 | |
US11044495B1 (en) | Systems and methods for variable length codeword based data encoding and decoding using dynamic memory allocation | |
CN106170921B (zh) | 涉及符号压缩的数据的源编码和解码方法及装置 | |
CN107102220B (zh) | 录波数据处理方法及装置 | |
US8599925B2 (en) | Efficient coding and decoding of transform blocks | |
US7623047B2 (en) | Data sequence compression | |
CN104391728A (zh) | 软件升级差量包获取方法和相应的升级方法以及装置 | |
US7688233B2 (en) | Compression for deflate algorithm | |
EP2455853A2 (en) | Data compression method | |
US20200294629A1 (en) | Gene sequencing data compression method and decompression method, system and computer-readable medium | |
US7507897B2 (en) | Dictionary-based compression of melody data and compressor/decompressor for the same | |
CN103841424B (zh) | 随机存取存储器中压缩数据的系统及方法 | |
CN108023597B (zh) | 一种数控系统可靠性数据压缩方法 | |
CN113312325B (zh) | 轨迹数据传输方法、装置、设备及存储介质 | |
WO2007050018A1 (en) | Method and system for compressing data | |
CN103581684A (zh) | 压缩编码和解码方法及装置 | |
CN106776663B (zh) | 音频文件的压缩方法和装置 | |
CN107846225A (zh) | 实时心电数据无损压缩、解压缩的方法、装置和系统 | |
JP2009516474A (ja) | 複数のマルコフチェーンを利用した圧縮 | |
CA2428788A1 (en) | Static information knowledge used with binary compression methods | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
CN1426629A (zh) | 使用多个编码器的优化无损压缩的方法和装置 | |
US20120110025A1 (en) | Coding order-independent collections of words | |
KR100732664B1 (ko) | 텍스트 데이터 압축을 위한 방법 및 장치 | |
Tank | Implementation of Lempel-ZIV algorithm for lossless compression using VHDL |
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 |