嵌入式系统的数据压缩、及解压缩方法与装置的制作方法

文档序号:7703150阅读:218来源:国知局
专利名称:嵌入式系统的数据压缩、及解压缩方法与装置的制作方法
技术领域
本发明涉及数据压缩技术,尤其涉及一种嵌入式系统的数据压缩方法与装 置,以及解压缩方法与装置。
背景技术
在嵌入式系统数据链路传输数据的过程中,当数据流量非常大时,往往会 导致链路的阻塞,同时会对数据上报的单板产生非常大的影响,使系统容量大
大降低,甚至会导致单板复位。例如在码分多址(CDMA, Code Division Multiple Access)系统的EVDO信道板日志上报时,当数据量较大时,将会存在大量的 数据丟包现象,且当数据上报选项有多个时,由于链路的堵塞,很容易导致单 板复位,给系统带来很多风险,同时给局外人员定位问题也增加了难度。为了 能够准确定位问题,实现多个数据项的同时上报,并将丟包率降到最低,提出 了在日志上报时,先对其进行数据压缩,在接收端再进行it据解压。从而减少 了丢包问题,避免了数据传输链路的拥塞。由于传统的压缩方法,都是基于文 件进行压缩的,并且都是在PC上进行压缩的,不用考虑CPU的占用率,但在 嵌入式系统中,所有的数据都是以字节流的形式出现的,没有办法以文件的方 式进行压缩存储,只能压缩緩沖数据流,而且由于数据的传输是一个不间断的 过程,需要考虑到CPU的占用率、内存利用率,同时也需要考虑到压缩率。目 前,尚未有专门针对嵌入式系统的较合适的数据压缩的技术方案。

发明内容
有鉴于此,本发明的主要目的在于提供一种嵌入式系统的数据压缩方法与 装置,以及解压缩方法与装置,能对嵌入式系统中的字节流进行4艮好地压缩, 利于数据传输。
5为达到上述目的,本发明的技术方案是这样实现的 一种嵌入式系统的lt据压缩方法,包括
确定出待压缩数据中相同的字节串,相同的字节串中除第一个字节串之外, 使用与相同字节串的距离及相同字节的数目来代替所述相同的字节串。 优选地,所述方法还包括
传输数据时,为未压缩数据及压缩数据分别设置标识位。 优选地,所述与相同字节串的距离及相同字节的数目使用伽马Gamma编 码方式进行编码。
优选地,所述确定出待压缩数据中相同的字节串,包括 所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则之前有与所述字节串相同的字节串,则继续滑动所述滑动窗,直到确定 出与之前字节串相同的最长字节串,并确定出与之前相同的字节串的距离。 优选地,所述确定出待压缩数据中相同的字节串,包括 所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则确定出与所述字节串相同且距离最近的字节串,并继续滑动所述滑动窗, 判断与前一滑动窗中所述字节串相同且距离最近的字节串的后一滑动窗中字节 是否与当前的滑动窗中的字节串相同,确定出字节串相同的最长字节串,并判 断字节串相同的最长字节串的字节数是否达到设定阈值,未达到时则判断是否 还存在与第一次字节串相同的滑动窗中的字节串相同的其他字节串,直到确定 出的字节串相同的最长字节串的字节数达到设定阈值;或确定不存在与第 一次 字节串相同的滑动窗中的字节串相同的其他字节串,并以所确定的字节串相同 的最长字节串作为最终的相同的字节串。 优选地,所述方法还包括
6确定所述滑动窗中的字节串与之前字节串不同时,将所述字节串存储于索 引链表的节点中,记录相同字节串的偏移量为零,记录所述字节串在类表数组 中对应地址存储的数据为存储所述字节串的节点在所述索引链表中顺序值;确
定所述滑动窗中的字节串与之前字节串相同时,将所述字节串存储于索引链表 的节点中,所述字节串与当前最近的相同字节串的偏移量作为所述字节串的偏 移量,记录所述字节串在类表数组中对应地址存储的数据为存储所述字节串的 节点在所述索引链表中顺序值。
一种嵌入式系统的^:据解压缩方法,包括
压缩数据中包含有压缩标识时,获取代替字节串的距离及字节数目,并在 已解压的数据中所述距离处获取出所述字节数目的字节,填入当前的解压数据中。
优选地,所述获取代替字节串的距离及字节数目,包括
使用Gamma编码方式对压缩数据中代替字节串的距离及字节数目进行解
码而获取所述距离及所述字节数目。
一种嵌入式系统的凝:据压缩装置,包括
确定单元,用于确定出待压縮数据中相同的字节串;以及
压缩单元,用于对相同的字节串中除第一个字节串之外,使用与相同字节
串的距离及相同字节的数目来代替所述相同的字节串。 优选地,所述装置还包括
设置单元,用于传输数据时,为未压缩数据及压缩数据分别设置标识位。 优选地,所述装置还包括
编码单元,用于对与相同字节串的距离及相同字节的数目使用Gamma编 码方式进4于编》马。
优选地,所述确定单元确定出待压缩数据中相同的字节串,包括 所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零时,则之前有与所述字节串相同的字节串,则继续滑动所述滑动窗,直到确定出与之前字节串相同的最长字节串,并确定出与之前相同的字节串的距离。
优选地,所述确定单元确定出待压缩数据中相同的字节串,包括所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零时,则确定出与所述字节串相同且距离最近的字节串,并继续滑动所述滑动窗,判断与前一滑动窗中所述字节串相同且距离最近的字节串的后一滑动窗中字节是否与当前的清动窗中的字节串相同,确定出字节串相同的最长字节串,并判
断字节串相同的最长字节串的字节数是否达到设定阈值,未达到时则判断是否还存在与第一次字节串相同的滑动窗中的字节串相同的其他字节串,直到确定
出的字节串相同的最长字节串的字节数达到设定阈值;或确定不存在与第一次
字节串相同的清动窗中的字节串相同的其他字节串,并以所确定的字节串相同的最长字节串作为最终的相同的字节串。
一种嵌入式系统的数据解压缩装置,包括
确定单元,用于确定压缩数据中包含有压缩标识时,触发获取单元;获取单元,用于获取代替字节串的距离及字节数目;以及解压单元,用于在已解压的数据中所述距离处获取出所述字节数目的字节,并填入当前的解压数据中。
本发明中,针对嵌入式系统的字节流数据,在待传输数据中确定出所有的相同的字节串,'对于与之前相同的字节串,使用与之前相同的字节串的距离及相同的字节数来代替该相同的字节串,由于代替字节串的仅仅是两个数字,从而大大减少了待传输字节的数据量,从而达到了对字节流数据的压缩,解压时,对于未压缩字节,直接输出即可,对于压缩字节串,按压缩方式反向进行解压即可。本发明兑其适合字节流传输的嵌入式系统,而嵌入式系统中的字节流传输的重复字节串又比较多,因此,数据压缩率比较高,从而使嵌入式系统的CPU占用率处于较低的水平。
8


图1为本发明嵌入式系统的数据压缩方法的示意图2为本发明嵌入式系统的数据压缩装置的组成结构示意图3为本发明嵌入式系统的数据接压缩装置的组成结构示意图。
具体实施例方式
本发明的基本思想是针对嵌入式系统的字节流数据,在待传输数据中确定出所有的相同的字节串,对于与之前相同的字节串,使用与之前相同的字节串的距离及相同的字节数来代替该相同的字节串,由于代替字节串的仅仅是两个数字,从而大大减少了待传输字节的数据量,从而达到了对字节流数据的压缩,解压时,对于未压缩字节,直接输出即可,对于压缩字节串,按压缩方式反向进行解压即可。本发明尤其适合字节流传输的嵌入式系统,而嵌入式系统中的字节流传输的重复字节串又比较多,因此,数据压缩率比较高,从而使嵌入式系统的CPU占用率处于较低的水平。
为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。
首先说明"下本发明采用的压缩原理,以字符串"abcdefl234abcdekil234"为例进行说明,对于该字符串中,查找出内容相同的字节串,下面用"()"括起来的部分就是字节串相同的部分,如abcdefl234 ( abcde ) ki ( 1234 )。本发明使用相同字节串之间的距离以及相同字符的数目(或长度)这样一对信息,来替换相同的字节串,如上迷字节串可表示为abcdefl234 ( 10, 5)ki(lh 4),其中,"(10, 5)"中的"10"为相同字节串与当前位置之间的距离,"5"为相同字节串的数目(或长度)。同理,"(11, 4),,中的"11"为相同字节串与当前位置之间的距离,"4"为相同字节串的数目。由于相同字节串之间的距离及相同字节数目这"对信息远小于被代替的字节串的大小,所以传输的字节流中的字节串得到了压缩。
以下通过具体的示例,进一步阐明本发明技术方案的实质。图1为本发明嵌入式系统的lt据压缩方法的示意图,如图1所示,本发明
以字节流"abcdefl234abckil23abcde1234,,为例,详细阐明本发明数据压缩的实质方案。
如图1所示,为待压缩的字节流设置存储字节串用的索引链表,并设置存储字节串匹配状态的类表数组m一awSortTable[],该数组中存储的数据为0时,表示当前滑动窗中的字节串在之前的字节串中没有与之相同的字节串,而类表数组n^awSortTable[]中存储的数据不为0时,表示当前滑动窗中的字节串在之前的字节串中有与之相同的字节串。根据滑动窗中的具体的字节串的内容来确定该字节串匹配状态在类表数组中的存储地址,以下将详细说明。本示例中的滑动窗大小为2个字节,可根据具体的需要而任意设置滑动窗的大小,例如设置其大小为3个、4个字节等。
从字节流的开头开始按滑动窗大小遍历整个字节流,首先找到"ab" 2字节串,计算"ab,'字节串的匹配状态在m—awSortTable[]中的存储地址,具体的,通过"ax256+b"来确定,"ax256+b"相当于确定出"ab,,字节串的Hash值,通过查找m—awSortTable[ax256+b],确认其为0,因为当前不存在与"ab"字节串相同(匹配)的字节串,则将"ab"插入到索引链表的节点1中,并将节点l对应的wOffSet、 wSameOffSet及wnext进行赋值,即全为0, wOffSet表示当前的字节串与之前最近的相同的字节串的偏移量,wSameOffSet表示当前的字
节串是否是相同字节的字节串,即确定当前的字节串是否为类似"aa"、 "bb"、"22"等字节相同的字节串,本例中为非字节相同的字节串,wSameOfflSet值为O,而为字节相同的字节串时,wSameOffSet值为1; wnext为与相同的字节串之间的偏移量,本发明中是确定与之前最近的字节串的偏移量(或距离),由于不存在与之相同的字节串,因此,该wnext为0。修改m—awSortTable[a x256+b]=l,表示"ab"插入到了索引链表的节点1中。
使滑动窗向后滑动一个字节,滑动窗当前为"be" 2字节串,确定之前的字节串中还是不存与之匹配的字节串,同"ab"相同的方式,将"be"插入索亏1链表的节点2 ,其中,节点2对应的wOffSet=0 , wSameOffSet=0 , wnext=0,
10需要说明的是,此时m—awSortTable[b x 256+c]=2 (之前该值为空,即为0 )。
如此一直向后滑动滑动窗,直到滑动窗中出现下一个"ab" 2字节串,通过计算"ab"字节串的类表数组地址,发现m—awSortTable[ax 256+b]不为0,证明在前面已经出现过一次"ab"字节串,且通过查询m一awSortTable[a x256+b]-l可以知道与该字节串相同的字节串存储在索引链表的节点1中,此时从该两个相同的字节串"ab"开始,在两相同的字节串之后分别滑动滑动窗,按前述方式逐个比较两滑动窗中的字节串,直到不相同为止,得出最大的相同字节串,对于本例,即确定出三个相同字节"abc"。并计算出从第ll个节点(第二个字节串"abc"或"ab"在索引链表中的存储的节点号)和第1个节点(第一个字节串"abc"或"ab"在索引链表中的存储的节点号)的差值,得到两字节串之间的距离为"10",同时又得到相同字节串的字节数目(或长度)为"3"。并将m—awSortTable[a x 256+b]=l 1 (11为第二个字节串 "ab"对应的节点号)。接着继续滑动滑动窗,当滑动窗中出现"12" 2字节串时,发现m—awSortTable[l x 256+2]=7,说明在前面的字节流中已经出现过一次"12"字节串,同上一步方法,得到最大的相同字符,三个重复字符"123"和两者之间的距离"9"。
继续滑动滑动窗,当滑动窗再次出现"ab"2字节串时,发现m_awSortTable[ax256+b]=ll,说明在前面的字节流中已出现过一次"ab"字节串,利用以上方式得到与节点11所在的字节串(两者之间的距离,相同字节串的字节长度),这时发现节点11对应的wnext=l,说明在节点1还有一个"ab"字节串,此时,将同时在以上步骤得到字节流当前位置到节点1所在位置的(两者之间的距离,相同字节串的字节长度),比较两次得到的"相同字节串的字节长度",最大的
一个作为最终确定的相同字节串。本例中,当前字节串"ab"与索引链表的节点1中的字节串之间的相同字节串的字节长度大,为"5",则以(18, 5)来代替字节串"abcde"。
需要说明的是,在滑动窗滑动到节点19处的"ab"时,本发明也可以先对节点11所在的字节串进行字节串的匹配,确定"相同字节串的字节长度"为"3",则与设定的阈值(如设置为4)比较,大于等于阈值时,则直接以该最近的相
同字节串的最大相同字节数作为最终的最大相同字节数;确定出的相同字节长 度小于设定阈值时,确定该最近的相同字节串("ab")之前是否还有该相同的 字节串("ab"),并确定出与次近的相同字节串的"相同字节串的字节长度", 并与设定的阚值比较,如果小于设定阔值则继续查找之前是否还有与当前滑动 窗口中相同的字节串("ab,'),直到查找出大于设定阈值的"相同字节串的字节 长度",或者查找完毕所有的字节流,如果查找完毕所有的字节流仍未查找到大 于设定阈值的"相同字节串的字节长度"的字节串,则以所查找到的最大"相 同字节串的字节长度"的子节串作为最终的相同字节串。
以下说明本发明如何实现压缩的,假定有 一 段字节流 "abcdefl234abcki 123abcde 1234abcki 123abcde 1234",当滑动窗指向字节流开头 位置,取出2字节串"ab",由图1中的滑动窗滑动过程可知,此时"ab" 2字 节串,没有重复,所以先往输出緩沖区中,写入bit '0,,接着写入V。
滑动窗继续往后滑动一个字节,取出2字节串"bc",此时"bc" 2字节串, 也有重复,所以也是先往输出緩冲区中,写入bit '0,,接着写入'b,。往索引 链表添加一个节点"ab",即图1中的索引链表中的节点1。
滑动窗继续往后滑动一个字节,取出2字节串"cd",此时"cd" 2字节串, 也有重复,所以也是先往输出緩沖区中,写入bit 'O,,接着写入V。再往 索引链表的后一个节点中添加"be",即图1中的索引链表的节点2。
依此类推,当滑动窗移到"4a,,时,取出2字节串"4a",此时"4a" 2字 节串,没有重复,所以也是先往输出緩冲区中,写入bit 'O,,接着写入'4,。 再往索引链表添加一个节点"34",即图1中索引链表的节点9。
滑动窗继续往下滑动一个字节,取出2字节串"ab",此时"ab" 2字节串, 在索引表里遍历时,发现已经在前面出现过。而且通过其索引节点,可以找到 它的wOffSet偏移。从而能够定位它出现的位置,计算出"距离10"和"相同 字节串的字节长度3"。此时先往输出緩沖区中,写入bit T,接着先对"距离 10"、"相同字节串的字节长度"进行伽马(Gamma)编码后输出到緩冲区中。然后往索引链表添加节点"4a,, "ab,,,即图1中的索引链表的节点10、节点11。 当滑动窗移动到"12"时,处理情况和"ab" —样。
以下筒单介绍一下Gamma编码,假设对x编码,令q = Int (log2x ),则编 码的前一部分是q个 1加一个0,后一部分是q位长的二进制数,其值等 于x -2q。普通凄i值与Gamma编码值的对应关系如表1所示
数值12 -3456789
编码值010010 1110 0011001110 10110 111110 0001110001
表 1
滑动窗往下滑动到再一个"ab"时,取出2字节串"ab" 此时"ab" 2字 节串,在索引表里遍历时,发现已经在前面出现过。而且通过其索引节点ll, 可以找到它的wOffSet偏移。从而能够定位它出现的位置,计算出它距离9和 相同的长度3。此时发现索引节点的wNext值不为0,表示在节点ll之前还有 出现过一次"ab"所以,通出wNext取得"ab"出现的索引位置,即节点1。 计算出它的距离19,相同的长度为5,比与节点ll计算出来的长度还要大。接 着再取得节点i的wNext的值为o,表示节点1之前没有相同的字节串"ab" 了 所以此时先往输出緩冲区中,写入bit 'l,,接着先对"距离"、"相同的长 度"进行Gamma编码后输出到緩沖区中。然后往索引链表添加节点"3a" 、 "ab"、 "bc"、 "cd",即图1中的索引链表的节点18、 19、 20、 21。
依此类推,最后压缩后的数据为"30988c664329986232198d300d669c6e,, (对应的ASCII 码),压缩前数据的ASCII 码是 "616263646566313233346162636b693132336162636465313233346162636b6931 3233616263646" 1323334"。因此大大压缩了节点流彰:据。
举个解压缩例子
解压缩是一个逆反过程,相对较简单。假定压缩后的数据为" 30988c664329986232198d300d669c6e"(对应的ASCII码),首先将指针指向开 头,取出第一个bit,是'0,,得出接下来的8个bit就是需要直接输出的字符。 从而得到"61" (ASCII码),即字符'a,,接着继续往下读一个"bit"位,发
13现还是'0,,继续记出接下来的8个"bit",即得到"62" (ASCII码),即字符 'b,,依此类推,可以读出"cdefl234,,,当取完字符'4,时,接下来再读一 个bit位,发现是'r,此时, 一直往下读出bit位直到不为'1,时,得出q 个1,然后再往下读一个0,接着再读出q位bit值。此时通过Gamma编码公 式进行反推,可以得出压缩前编码的数据值,从而读出重复的长度;接着往下 读出压缩前两者之间的距离所需要存储的bit长度,即读出两者之间的距离,然 后就可以开始复制数据到当前位置输出。依此类推,就可以将所有数据解压出 来。
图2为本发明嵌入式系统的凄t据压缩装置的组成结构示意图,如图2所示, 本发明嵌入式系统的凄t据压缩装置包括确定单元20和压缩单元21,其中,确 定单元20用于确定出待压缩数据中相同的字节串;压缩单元21用于对相同的 字节串中除第一个字节串之外,使用与相同字节串的距离及相同字节的数目来 代替所述相同的字节串。
如图2所示,本发明嵌入式系统的数据压缩装置还包括设置单元22,用于 传输数据时,为未压缩数据及压缩数据分别设置标识位。
如图2所示,本发明嵌入式系统的数据压缩装置还包括编码单元23,用于 对与相同字节串的距离及相同字节的数目使用Gamma编码方式进行编码。
确定单元20确定出待压缩数据中相同的字节串,包括所设置的滑动窗从 待压缩数据的首字节起逐字节地滑动,根据每次滑动后所述滑动窗中的字节串 确定所述字节串在类表数组中的地址,判断所述地址中存储的数据是否为零, 若为零则之前没有与所述字节串相同的字节串,不为零时,则之前有与所述字
节串相同的字节串,则继续滑动所述滑动窗,直到确定出与之前字节串相同的 最长字节串,并确定出与之前相同的字节串的距离。
或者,确定单元20确定出待压缩数据中相同的字节串,包括所设置的滑 动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后所述滑动窗中的 字节串确定所述字节串在类表数组中的地址,判断所述地址中存储的数据是否 为零,若为零则之前没有与所述字节串相同的字节串,不为零时,则确定出与所述字节串相同且距离最近的字节串,并继续滑动所述滑动窗,判断与前一滑 动窗中所述字节串相同且距离最近的字节串的后一滑动窗中字节是否与当前的 滑动窗中的字节串相同,确定出字节串相同的最长字节串,并判断字节串相同 的最长字节串的字节数是否达到设定阈值,未达到时则判断是否还存在与第一 次字节串相同的滑动窗中的字节串相同的其他字节串,直到确定出的字节串相
同的最长字节串的字节凄t达到设定阈值;或确定不存在与第一次字节串相同的 滑动窗中的字节串相同的其他字节串,并以所确定的字节串相同的最长字节串 作为最终的相同的字节串。
本领域技术人员应当理解,本发明图2所示的嵌入式系统的数据压缩装置 是为实现前述嵌入式系统的数据压缩方法而设计的,图2所示装置中的各处理 单元的实现功能可参照前述降低多载波相互干扰的方法中的相关描述而理解, 各单元的功能可通过运行于处理器上的程序而实现,也可通过相应的逻辑电路 而实现。
图3为本发明嵌入式系统的数据接压缩装置的组成结构示意图,如图3所 示,本发明嵌入式系统的lt据压缩装置包括确定单元30、获取单元31和解压 单元32,其中,确定单元30用于确定压缩凄t据中包含有压缩标识时,触发获 取单元31;获取单元31用于获取代替字节串的距离及字节数目;解压单元32 用于在已解压的数据中所述距离处获取出所述字节数目的字节,并填入当前的 解压数据中。
本领域技术人员应当理解,本发明图3所示的嵌入式系统的数据解压缩装 置是为实现前述嵌入式系统的数据压缩方法而设计的,图3所示装置中的各处 理单元的实现功能可参照前述降低多载波相互干扰的方法中的相关描述而理 解,各单元的动能可通过运行于处理器上的程序而实现,也可通过相应的逻辑 电路而实现。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1、一种嵌入式系统的数据压缩方法,其特征在于,包括确定出待压缩数据中相同的字节串,相同的字节串中除第一个字节串之外,使用与相同字节串的距离及相同字节的数目来代替所述相同的字节串。
2、 根据权利要求1所述的方法,其特征在于,所述方法还包括 传输数据时,为未压缩数据及压缩数据分别设置标识位。
3、 根据权利要求1所述的方法,其特征在于,所述与相同字节串的距离及 相同字节的数目使用伽马Gamma编码方式进行编码。
4、 根据权利要求1所述的方法,其特征在于,所述确定出待压缩数据中相 同的字节串,包括所设置的清动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则之前有与所述字节串相同的字节串,则继续滑动所述滑动窗,直到确定 出与之前字节举相同的最长字节串,并确定出与之前相同的字节串的距离。
5、 根据权利要求1所述的方法,其特征在于,所述确定出待压缩数据中相 同的字节串,包括所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则确定出与所述字节串相同且距离最近的字节串,并继续滑动所述滑动窗, 判断与前一滑动窗中所述字节串相同且距离最近的字节串的后一滑动窗中字节 是否与当前的清动窗中的字节串相同,确定出字节串相同的最长字节串,并判 断字节串相同的最长字节串的字节数是否达到设定阈值,未达到时则判断是否 还存在与第一次字节串相同的滑动窗中的字节串相同的其他字节串,直到确定 出的字节串相同的最长字节串的字节数达到设定阈值;或确定不存在与第一次字节串相同的滑动窗中的字节串相同的其他字节串,并以所确定的字节串相同 的最长字节串作为最终的相同的字节串。
6、 根据权利要求4或5所述的方法,其特征在于,所述方法还包括 确定所述滑动窗中的字节串与之前字节串不同时,将所迷字节串存储于索引链表的节点中,记录相同字节串的偏移量为零,记录所述字节串在类表数组 中对应地址存储的数据为存储所述字节串的节点在所述索引链表中顺序值;确 定所述滑动窗中的字节串与之前字节串相同时,将所述字节串存储于索引链表 的节点中,所述字节串与当前最近的相同字节串的偏移量作为所述字节串的偏节点在所述索引《连表中顺序值。
7、 一种嵌入式系统的数据解压缩方法,其特征在于,包括 压缩数据中包含有压缩标识时,获取代替字节串的距离及字节数目,并在已解压的数据中所述距离处获取出所述字节数目的字节,填入当前的解压数据 中。
8、 根据权利要求7所述的方法,其特征在于,所述获取代替字节串的距离 及字节数目,包括使用Gamma编码方式对压缩数据中代替字节串的距离及字节数目进行解 码而获取所述距离及所述字节数目。
9、 一种嵌入式系统的数据压缩装置,其特征在于,包括 确定单元,用于确定出待压缩数据中相同的字节串;以及压缩单元,用于对相同的字节串中除第一个字节串之外,使用与相同字节 串的距离及相同字节的数目来代替所述相同的字节串。
10、 根据杈利要求9所述的装置,其特征在于,所述装置还包括 设置单元,用于传输数据时,为未压缩数据及压缩数据分别设置标识位。
11、 根据权利要求9所述的装置,其特征在于,所述装置还包括 编码单元,用于对与相同字节串的距离及相同字节的数目使用Gamma编码方式进行编码。
12、 根据权利要求9所述的装置,其特征在于,所述确定单元确定出待压 缩数据中相同的字节串,包括所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则之前有与所述字节串相同的字节串,则继续滑动所述滑动窗,直到确定 出与之前字节串相同的最长字节串,并确定出与之前相同的字节串的距离。
13、 根据权利要求9所述的装置,其特征在于,所述确定单元确定出待压 缩数据中相同的字节串,包括: 所设置的滑动窗从待压缩数据的首字节起逐字节地滑动,根据每次滑动后 所述滑动窗中的字节串确定所述字节串在类表数组中的地址,判断所述地址中 存储的数据是否为零,若为零则之前没有与所述字节串相同的字节串,不为零 时,则确定出与所述字节串相同且距离最近的字节串,并继续滑动所述滑动窗,判断与前一滑动窗中所述字节串相同且距离最近的字节串的后一滑动窗中字节 是否与当前的滑动窗中的字节串相同,确定出字节串相同的最长字节串,并判 断字节串相同的最长字节串的字节数是否达到设定阈值,未达到时则判断是否 还存在与第一次字节串相同的滑动窗中的字节串相同的其他字节串,直到确定出的字节串相同的最长字节串的字节数达到设定阈值;或确定不存在与第 一次 字节串相同的滑动窗中的字节串相同的其他字节串,并以所确定的字节串相同的最长字节串作为最终的相同的字节串。
14、 一种嵌入式系统的数据解压缩装置,其特征在于,包括 确定单元,用于确定压缩数据中包含有压缩标识时,触发获取单元; 获取单元,用于获取代替字节串的距离及字节数目;以及解压单元,用于在已解压的数据中所述距离处获取出所述字节数目的字节, 并填入当前的解压凄t据中。
全文摘要
本发明公开了一种嵌入式系统的数据压缩方法,包括确定出待压缩数据中相同的字节串,相同的字节串中除第一个字节串之外,使用与相同字节串的距离及相同字节的数目来代替所述相同的字节串。本发明同时公开了一种嵌入式系统的数据解压缩方法,包括压缩数据中包含有压缩标识时,获取代替字节串的距离及字节数目,并在已解压的数据中所述距离处获取出所述字节数目的字节,填入当前的解压数据中。本发明同时公开了实现前述方法的装置。本发明尤其适合字节流传输的嵌入式系统,而嵌入式系统中的字节流传输的重复字节串又比较多,因此,数据压缩率比较高,从而使嵌入式系统的CPU占用率处于较低的水平。
文档编号H04B1/69GK101667843SQ20091009386
公开日2010年3月10日 申请日期2009年9月22日 优先权日2009年9月22日
发明者杨河山 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1