數(shù)據(jù)壓縮方法及數(shù)據(jù)解壓縮裝置的制造方法
【技術領域】
[0001]本發(fā)明屬于數(shù)據(jù)壓縮領域,尤其涉及一種數(shù)據(jù)壓縮方法及數(shù)據(jù)解壓縮裝置。
【背景技術】
[0002]隨著電子技術及網(wǎng)絡技術的發(fā)展,電子產(chǎn)品、網(wǎng)絡存儲的數(shù)據(jù)量越來越大。為了在有限的存儲空間保存盡量多的數(shù)據(jù),人們通常對數(shù)據(jù)實現(xiàn)壓縮后再存儲。
[0003]現(xiàn)有的壓縮方法有字典壓縮法,該方法的原理是構建一個字典,用索引來代替重復出現(xiàn)的字符或字符串。該方法在字符串較長時,將導致構建的字典過大,并且隨著字典的增大,匹配的速度快速下降,從而導致壓縮速度過慢。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供了一種數(shù)據(jù)壓縮方法,旨在解決現(xiàn)有方法導致的壓縮速度過慢的問題。
[0005]本發(fā)明實施例是這樣實現(xiàn)的,一種數(shù)據(jù)壓縮方法,所述方法包括下述步驟:
[0006]接收待壓縮數(shù)據(jù);
[0007]將接收的待壓縮數(shù)據(jù)分為第一部分數(shù)據(jù)和第二部分數(shù)據(jù),所述第一部分數(shù)據(jù)作為壓縮所述第二部分數(shù)據(jù)的動態(tài)字典,所述動態(tài)字典的長度為預先設定;
[0008]將第二部分數(shù)據(jù)與所述動態(tài)字典匹配,若匹配成功,將所述待壓縮數(shù)據(jù)轉換成匹配成功對應的格式,若匹配失敗,分析所述第二部分數(shù)據(jù)的格式,并將分析了格式的具有重復特性的第二部分數(shù)據(jù)轉換成匹配失敗對應的格式,所述匹配成功對應的格式含有所述待壓縮數(shù)據(jù)中被壓縮的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息;所述匹配失敗對應的格式含有不匹配數(shù)據(jù)、字符數(shù),或含有不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性的信息;
[0009]更新動態(tài)字典;
[0010]輸出壓縮數(shù)據(jù)。
[0011]本發(fā)明實施例的另一目的在于提供一種數(shù)據(jù)壓縮裝置,所述裝置包括:第一接收器,用于接收待壓縮數(shù)據(jù);
[0012]第一數(shù)據(jù)劃分單元,用于將接收的待壓縮數(shù)據(jù)分為第一部分數(shù)據(jù)和第二部分數(shù)據(jù),所述第一部分數(shù)據(jù)作為壓縮所述第二部分數(shù)據(jù)的動態(tài)字典,所述動態(tài)字典的長度為預先設定;
[0013]第一匹配器,用于將第二部分數(shù)據(jù)與所述動態(tài)字典匹配,若匹配成功,將所述待壓縮數(shù)據(jù)轉換成匹配成功對應的格式,若匹配失敗,分析所述第二部分數(shù)據(jù)的格式,并將分析了格式的具有重復特性的第二部分數(shù)據(jù)轉換成匹配失敗對應的格式,所述匹配成功對應的格式含有所述待壓縮數(shù)據(jù)中被壓縮的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息;所述匹配失敗對應的格式含有不匹配數(shù)據(jù)、字符數(shù),或含有不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性的信息;
[0014]第一數(shù)據(jù)處理器,用于更新動態(tài)字典;
[0015]第一輸出單元,用于輸出壓縮數(shù)據(jù)。
[0016]本發(fā)明實施例的另一目的在于提供一種數(shù)據(jù)解壓縮裝置,所述裝置包括:
[0017]第二接收器,用于接收待解壓縮數(shù)據(jù),所述待解壓縮數(shù)據(jù)含有被壓縮的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息;或者,所述待解壓縮數(shù)據(jù)含有不匹配數(shù)據(jù)、字符數(shù),或含有不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性的信息;
[0018]第二數(shù)據(jù)劃分單元,用于將接收的待解壓縮數(shù)據(jù)分為第一部分數(shù)據(jù)和第二部分數(shù)據(jù),所述第一部分數(shù)據(jù)作為解壓縮所述第二部分數(shù)據(jù)的動態(tài)字典,所述動態(tài)字典的長度為預先設定;
[0019]數(shù)據(jù)分析器,用于分析待解壓數(shù)據(jù)的首字符,判斷待解壓數(shù)據(jù)是否為匹配的壓縮數(shù)據(jù);若為匹配的壓縮數(shù)據(jù),根據(jù)待解壓縮數(shù)據(jù)所包含的被壓縮數(shù)據(jù)的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息,在動態(tài)字典中,標示出對應位置的字符串,標示的字符串作為解壓出的數(shù)據(jù);若為不匹配的壓縮數(shù)據(jù),則分析待解壓數(shù)據(jù)中首字符后的數(shù)據(jù)是否具有重復特性,若無重復特性,根據(jù)待解壓縮數(shù)據(jù)所包含的被壓縮數(shù)據(jù)的不匹配數(shù)據(jù)、字符數(shù)直接將待解壓數(shù)據(jù)作為解壓出的數(shù)據(jù),若有重復特性,則根據(jù)待解壓縮數(shù)據(jù)所包含的被壓縮數(shù)據(jù)的不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性將重復的待解壓數(shù)據(jù)展開,作為解壓出的數(shù)據(jù);
[0020]第二數(shù)據(jù)處理器,用于將解壓出的數(shù)據(jù)添加到動態(tài)字典的尾部,作為新的動態(tài)字典,并將動態(tài)字典起始位置后移,后移長度為數(shù)據(jù)分析器中分析出的被壓縮數(shù)據(jù)的字符數(shù),以此完成動態(tài)字典的更新操作;
[0021]第二輸出單元,用于輸出解壓數(shù)據(jù)。
[0022]本發(fā)明實施例中,由于動態(tài)字典在與數(shù)據(jù)匹配后及時更新,因此能夠確保高效率壓縮,達到高效的壓縮性能。
【附圖說明】
[0023]圖1是本發(fā)明第一實施例提供的一種數(shù)據(jù)壓縮方法的流程圖;
[0024]圖2是本發(fā)明第二實施例提供的一種數(shù)據(jù)壓縮裝置的結構圖;
[0025]圖3是本發(fā)明第三實施例提供的一種數(shù)據(jù)解壓縮裝置的結構圖。
【具體實施方式】
[0026]為了使本發(fā)明的目的、技術方案及優(yōu)點更加清楚明白,以下結合附圖及實施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0027]本發(fā)明實施例中,將待壓縮數(shù)據(jù)分為兩部分,一部分數(shù)據(jù)作為壓縮另一部分數(shù)據(jù)的動態(tài)字典,根據(jù)數(shù)據(jù)與動態(tài)字典匹配的結果,將待壓縮數(shù)據(jù)轉換為相應的格式,從而實現(xiàn)待壓縮數(shù)據(jù)的快速壓縮。
[0028]為了說明本發(fā)明所述的技術方案,下面通過具體實施例來進行說明。
[0029]實施例一:
[0030]圖1示出了本發(fā)明第一實施例提供的一種數(shù)據(jù)壓縮方法的流程圖,詳述如下:
[0031]步驟S11、接收待壓縮數(shù)據(jù)。
[0032]該步驟中,接收的待壓縮數(shù)據(jù)可以具有位流特性的字符,常見的具有位流特性的數(shù)據(jù)有現(xiàn)場可編程門陣列(Field — Programmable Gate Array, FPGA)的配置數(shù)據(jù)。
[0033]步驟S12、將接收的待壓縮數(shù)據(jù)分為第一部分數(shù)據(jù)和第二部分數(shù)據(jù),所述第一部分數(shù)據(jù)作為壓縮所述第二部分數(shù)據(jù)的動態(tài)字典,所述動態(tài)字典的長度為預先設定。
[0034]該步驟中,動態(tài)字典是待壓縮數(shù)據(jù)的一部分,該動態(tài)字典的長度根據(jù)實際需要設定。以待壓縮數(shù)據(jù)是FPGA配置數(shù)據(jù)為例,可將輸入的前256個配置數(shù)據(jù)作為動態(tài)字典的數(shù)據(jù),該動態(tài)字典的數(shù)據(jù)將對后面輸入的數(shù)據(jù)進行壓縮。
[0035]步驟S13、將第二部分數(shù)據(jù)與所述動態(tài)字典匹配,若匹配成功,將所述待壓縮數(shù)據(jù)轉換成匹配成功對應的格式,若匹配失敗,分析所述第二部分數(shù)據(jù)的格式,并將分析了格式的具有重復特性的第二部分數(shù)據(jù)轉換成匹配失敗對應的格式,所述匹配成功對應的格式含有所述待壓縮數(shù)據(jù)中被壓縮的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息;所述匹配失敗對應的格式含有不匹配數(shù)據(jù)、字符數(shù),或含有不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性的信肩、O
[0036]該步驟中,當?shù)诙糠謹?shù)據(jù)與動態(tài)字典匹配成功時,記錄該第二部分數(shù)據(jù)中與動態(tài)字典匹配的字符數(shù)、被壓縮數(shù)據(jù)在動態(tài)字典的起始位置的信息,即將該第二部分數(shù)據(jù)轉為相應格式,其中,字符數(shù)即字符長度。;當?shù)诙糠謹?shù)據(jù)與動態(tài)字典匹配失敗,即該第二部分數(shù)據(jù)不存在與動態(tài)字典相同的字符時,分析該第二部分數(shù)據(jù)是否具有重復的字符,若沒有,直接將該第二部分數(shù)據(jù)作為壓縮數(shù)據(jù),若有,則分析該第二部分數(shù)據(jù)中連續(xù)重復的字符及重復的字符數(shù),再根據(jù)分析結果將該第二部分數(shù)據(jù)轉換到包含有不匹配數(shù)據(jù)、字符數(shù)以及連續(xù)字符重復特性的信息的相應格式。其中,連續(xù)字符重復特性是指包含有連續(xù)重復字符的信息,比如,字符串11115與動態(tài)字典不匹配時,轉換的格式可為145,使用“4”表示4個“1”,該“4”即為字符串11115的連續(xù)字符重復特性。
[0037]將第二部分數(shù)據(jù)轉換為含有被壓縮的字符數(shù)和被壓縮數(shù)據(jù)的起始位置的信息的格式,采用這種格式不僅簡單而且可以將待壓縮數(shù)據(jù)完整的表示出來,以達到高效準確的壓縮效果。
[0038]其中,將第二部分數(shù)據(jù)與所述動態(tài)字典匹配,若匹配成功,將所述待壓縮數(shù)據(jù)轉換成匹配成功對應的格式的步驟具體為:
[0039]Al、在動態(tài)字典中查找與所述第二部分數(shù)據(jù)的首字節(jié)相同的字符;
[