国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種通用信息的無損壓縮與解壓縮方法

      文檔序號:7518233閱讀:252來源:國知局
      專利名稱:一種通用信息的無損壓縮與解壓縮方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種數(shù)據(jù)的無損壓縮與解壓縮方法,具體涉及一種通用信息的無損壓 縮與解壓縮方法。
      背景技術(shù)
      無損壓縮是利用數(shù)據(jù)的統(tǒng)計冗余進行壓縮,可完全回復(fù)原始數(shù)據(jù)而不引起任何失 真。當(dāng)今,各種信息系統(tǒng)的數(shù)據(jù)量越來越大,如何更快、更多、更好地傳輸與無損存儲數(shù)據(jù)成 為數(shù)據(jù)信息處理的首要問題,而數(shù)據(jù)無損壓縮技術(shù)則是解決這一問題的重要方法。數(shù)據(jù)無損壓縮技術(shù)早已應(yīng)用于各個領(lǐng)域,但壓縮率是受到數(shù)據(jù)統(tǒng)計冗余度的理論 限制,目前流行的Winzip.Winrar等軟件壓縮后的信息,都不能進行再次無損壓縮。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題是提供一種不僅對常見的文件格式數(shù)據(jù)能夠無損壓縮, 而且對已經(jīng)經(jīng)過常用壓縮軟件壓縮過的數(shù)據(jù)信息也能進一步再壓縮的壓縮與解壓縮方法; 由本發(fā)明所述壓縮方法壓縮得到的文件所占用空間更小。為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案一種通用信息的無損壓縮方法,其步驟如下1)以二進制方式讀取源文件,所得二進制序列存入新建數(shù)組A中,將數(shù)組A中的第 一位二進制代碼存入變量a中;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“1”,所得序列存入新建數(shù)組B中;3)統(tǒng)計數(shù)組B中出現(xiàn)的不同的元素,將這些不同的元素按出現(xiàn)的順序存入新建數(shù) 組C中;4)將數(shù)組C中的元素按升序排序,排序后的序列存入新建數(shù)組D中;5)將數(shù)組D中第η個元素值使用數(shù)字η代替,所得序列存入新建數(shù)組E中;6)將數(shù)組D中元素和數(shù)組E中元素按照一一對應(yīng)的關(guān)系,對數(shù)組B中所有的元素 進行替換,所得序列存入新建數(shù)組F中;7)將數(shù)組F中所有元素做上述第1)步驟的反變換,其中數(shù)組F中的第一位代碼為 變量a中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組G中;8)將數(shù)組D中元素進行“后項減去相鄰前項”處理,結(jié)果存入新建數(shù)組H中,尋找 數(shù)組H中第一個大于或等于2的元素位置,設(shè)此元素在數(shù)組H中的位置為n,將數(shù)組D中前 η個元素全部刪除,剩余的元素順序存入新建數(shù)組I中;9)保存數(shù)組I和G為二進制文件,此二進制文件即為源文件無損壓縮后的文件。其中步驟5)中,數(shù)字η以1開始計數(shù)。
      步驟8)中,元素位置η以1開始計數(shù)。步驟1)中,所述源文件可為未經(jīng)壓縮軟件壓縮過的數(shù)據(jù)信息,即常見的文件格式 數(shù)據(jù),還可以是經(jīng)PAQ,winrk, ffinzip, winrar等壓縮軟件壓縮過的數(shù)據(jù)信息。本發(fā)明所述的通用信息的解壓縮方法,其步驟如下1)讀取數(shù)組G中的二進制序列,將數(shù)組G中第一位二進制代碼存入變量g中;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“ 1 ”,所得序列存入新建數(shù)組F中;3)統(tǒng)計數(shù)組F中出現(xiàn)的不同的元素及,將這些不同的元素按出現(xiàn)的順序存入新建 數(shù)組E中;4)將數(shù)組E中的元素按升序排序,排序后的序列存入新建數(shù)組D中;5)讀取數(shù)組I,設(shè)數(shù)組I中共有i個元素,將數(shù)組D中后i個元素使用數(shù)組I中的 元素替換,替換后的序列存入新建數(shù)組C中;6)將數(shù)組D中元素和數(shù)組C中元素按照一一對應(yīng)的關(guān)系,對數(shù)組F中所有的元素 進行替換,所得序列存入新建數(shù)組B中;7)將數(shù)組B中所有元素做上述第1)步驟的反變換,其中數(shù)組B中的第一位代碼 為變量g中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組A中,將數(shù)組A保存為文 件,該文件即為源文件。與現(xiàn)有技術(shù)相比,本發(fā)明所述壓縮方法不僅可對常見的文件格式數(shù)據(jù)進行無損壓 縮,而且對已經(jīng)經(jīng)過常用壓縮軟件壓縮過的數(shù)據(jù)信息也能進一步再壓縮,使壓縮得到的文 件所占用空間更小,可在原有的壓縮比的基礎(chǔ)上再去除1 80%的冗余(去除的冗余量情 況視文件內(nèi)部數(shù)據(jù)冗余不同而不同),而且本發(fā)明所述壓縮方法算法簡單,易于實現(xiàn)。


      圖1為對源文件進行無損壓縮的流程圖;圖2為對壓縮文件進行解壓縮的流程圖。圖中標(biāo)號為101、以二進制方式讀取源文件,所得二進制序列存入新建數(shù)組A中,將數(shù)組A中的 第一位二進制代碼存入變量a中;102、用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“1”,所得序列存入新建數(shù)組B中;103、統(tǒng)計數(shù)組B中出現(xiàn)的不同的元素,將這些不同的元素按出現(xiàn)的順序存入新建 數(shù)組C中;104、將數(shù)組C中的元素按升序排序,排序后的序列存入新建數(shù)組D中;105、將數(shù)組D中第η個元素值使用數(shù)字η代替,所得序列存入新建數(shù)組E中;106、將數(shù)組D中元素和數(shù)組E中元素按照一一對應(yīng)的關(guān)系,對數(shù)組B中所有的元 素進行替換,所得序列存入新建數(shù)組F中;107、將數(shù)組F中所有元素做上述第1)步驟的反變換,其中數(shù)組F中的第一位代碼
      4為變量a中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組G中;108、將數(shù)組D中元素進行“后項減去相鄰前項”處理,結(jié)果存入新建數(shù)組H中,尋 找數(shù)組H中第一個大于或等于2的元素位置,設(shè)此元素在數(shù)組H中的位置為n,將數(shù)組D中 前η個元素全部刪除,剩余的元素順序存入新建數(shù)組I中;109、保存數(shù)組I和G為二進制文件,此二進制文件即為源文件無損壓縮后的文件。201、讀取數(shù)組G中的二進制序列,將數(shù)組G中第一位二進制代碼存入變量g中;202、用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“ 1 ”,所得序列存入新建數(shù)組F中;203、統(tǒng)計數(shù)組F中出現(xiàn)的不同的元素及,將這些不同的元素按出現(xiàn)的順序存入新 建數(shù)組E中;204、將數(shù)組E中的元素按升序排序,排序后的序列存入新建數(shù)組D中;205、讀取數(shù)組I,設(shè)數(shù)組I中共有i個元素,將數(shù)組D中后i個元素使用數(shù)組I中 的元素替換,替換后的序列存入新建數(shù)組C中;206、將數(shù)組D中元素和數(shù)組C中元素按照一一對應(yīng)的關(guān)系,對數(shù)組F中所有的元 素進行替換,所得序列存入新建數(shù)組B中;207、將數(shù)組B中所有元素做上述第1)步驟的反變換,其中數(shù)組B中的第一位代碼 為變量g中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組A中,將數(shù)組A保存為文 件,該文件即為源文件。
      具體實施例方式圖1為本發(fā)明所述壓縮方法對源文件進行無損壓縮的流程圖。如圖1所示,壓縮 的步驟為對將要進行壓縮的文件以二進制方式讀出,所得二進制序列存入新建數(shù)組A中, 將數(shù)組A中的第一位二進制代碼存入變量a中(步驟101);用數(shù)組A中“持續(xù)0直至下一 位是1”的長度替換“持續(xù)0直至下一位是1”中所出現(xiàn)的所有的“0” ;用數(shù)組A中“持續(xù)1 直至下一位是0”的長度替換“持續(xù)1直至下一位是0”中所出現(xiàn)的所有的“1”,所得序列存 入新建數(shù)組B中(步驟102);然后統(tǒng)計數(shù)組B中出現(xiàn)的不同的元素,將這些不同的元素按出 現(xiàn)的順序存入新建數(shù)組C中(步驟103);將數(shù)組C中的元素按升序排序,排序后的序列存 入新建數(shù)組D中(步驟104);再將數(shù)組D中第η個元素值使用數(shù)字η代替,所得序列存入 新建數(shù)組E中,其中數(shù)字η以1開始計數(shù)(步驟105);之后,將數(shù)組D中元素和數(shù)組E中元 素按照一一對應(yīng)的關(guān)系,對數(shù)組B中所有的元素進行替換,所得序列存入新建數(shù)組F中(步 驟106);將數(shù)組F中所有元素做上述第1)步驟的反變換,其中數(shù)組F中的第一位代碼為變 量a中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組G中(步驟107);最后,將數(shù) 組D中元素進行“后項減去相鄰前項”處理,結(jié)果存入新建數(shù)組H中,尋找數(shù)組H中第一個 大于或等于2的元素位置,設(shè)此元素在數(shù)組H中的位置為n,將數(shù)組D中前η個元素全部刪 除,剩余的元素順序存入新建數(shù)組I中,所述元素位置η以1開始計數(shù)(步驟108);保存數(shù) 組I和G,數(shù)組I和G即為源文件無損壓縮后的文件(步驟109)。圖2為對經(jīng)壓縮的文件進行解壓縮的流程圖,如圖2所示,解壓縮的步驟為讀取 數(shù)組G中的二進制序列,將數(shù)組G中第一位二進制代碼存入變量g中(步驟201);用數(shù)組A
      5中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中所出現(xiàn)的所有的“0” ; 用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位是0”中所出現(xiàn)的所 有的“1”,所得序列存入新建數(shù)組F中(步驟202);接著統(tǒng)計數(shù)組F中出現(xiàn)的不同的元素 及,將這些不同的元素按出現(xiàn)的順序存入新建數(shù)組E中(步驟203);然后,將數(shù)組E中的元 素按升序排序,排序后的序列存入新建數(shù)組D中(步驟204);讀取數(shù)組I,設(shè)數(shù)組I中共有 i個元素,將數(shù)組D中后i個元素使用數(shù)組I中的元素替換,替換后的序列存入新建數(shù)組C 中(步驟205);之后,將數(shù)組D中元素和數(shù)組C中元素按照一一對應(yīng)的關(guān)系,對數(shù)組F中所 有的元素進行替換,所得序列存入新建數(shù)組B中(步驟206);最后將數(shù)組B中所有元素做 上述第1)步驟的反變換,其中數(shù)組B中的第一位代碼為變量g中所存的代碼,反變換后的 二進制代碼序列存入新建數(shù)組A中,將數(shù)組A保存為文件,該文件即為源文件(步驟207)。下面以實例對本發(fā)明進行說明。假設(shè)某個將要進行壓縮的文件W,一、上述W文件的無損壓縮過程如下1)以二進制方式讀取出的二進制代碼A = {001001011101001100000111010111110},a = 0 ;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“1”,所得序列存入新建數(shù)組B中;B = 21211311225311151};3)統(tǒng)計數(shù)組B中出現(xiàn)的不同的元素,將這些不同的元素按出現(xiàn)的順序存入新建數(shù) 組C中;C= {2135},4)將數(shù)組C中的元素按升序排序,排序后的序列存入新建數(shù)組D中;D = {1235};5)將數(shù)組D中第η個元素值使用數(shù)字η代替,所得序列存入新建數(shù)組E中;E = {1234};6)將數(shù)組D中元素和數(shù)組E中元素按照一一對應(yīng)的關(guān)系,對數(shù)組B中所有的元素 進行替換,所得序列存入新建數(shù)組F中;F= {21211311224311141};7)將數(shù)組F中所有元素做上述第1)步驟的反變換,其中數(shù)組F中的第一位代碼為 變量a中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組G中;G= {0010010111010011000011101011110};8)將數(shù)組D中元素進行“后項減去相鄰前項”處理,結(jié)果存入新建數(shù)組H中,尋找 數(shù)組H中第一個大于或等于2的元素位置,設(shè)此元素在數(shù)組H中的位置為n,將數(shù)組D中前 η個元素全部刪除,剩余的元素順序存入新建數(shù)組I中;H= {112},I = {5};9)保存數(shù)組I和G為二進制文件,此二進制文件即為源文件無損壓縮后的文件。分析比較數(shù)組A和數(shù)組G可以看出,數(shù)組G比數(shù)組A中少了 2個二進制代碼,即 數(shù)組G比數(shù)組A中少占了 2個比特位的空間。在此例中源文件序列A的長度為33比特位,
      6壓縮后文件序列G的長度為31比特位,意即此算法去除了 A中6%的冗余數(shù)據(jù),節(jié)省了 6% 的存儲空間。二、壓縮后的W文件的解壓過程1)讀取壓縮后的文件中數(shù)組G中的二進制序列G = {0010010111010011000011101011110},g = 0 ;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中 所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位 是0”中所出現(xiàn)的所有的“ 1 ”,所得序列存入新建數(shù)組F中;F= {21211311224311141};3)統(tǒng)計數(shù)組F中出現(xiàn)的不同的元素及,將這些不同的元素按出現(xiàn)的順序存入新建 數(shù)組E中;E = {2134};4)將數(shù)組E中的元素按升序排序,排序后的序列存入新建數(shù)組D中;D = {1234};5)讀取數(shù)組I,設(shè)數(shù)組I中共有i個元素,將數(shù)組D中后i個元素使用數(shù)組I中的 元素替換,替換后的序列存入新建數(shù)組C中;I= {5},i = 1,C = {1235};6)將數(shù)組D中元素和數(shù)組C中元素按照一一對應(yīng)的關(guān)系,對數(shù)組F中所有的元素 進行替換,所得序列存入新建數(shù)組B中;B= {21211311225311151};7)將數(shù)組B中所有元素做上述第1)步驟的反變換,其中數(shù)組B中的第一位代碼 為變量g中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組A中,將數(shù)組A保存為文 件,該文件即為源文件;A= {001001011101001100000111010111110} O
      權(quán)利要求
      一種通用信息的無損壓縮方法,其步驟如下1)以二進制方式讀取源文件,所得二進制序列存入新建數(shù)組A中,將數(shù)組A中的第一位二進制代碼存入變量a中;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中所出現(xiàn)的所有的“0”;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位是0”中所出現(xiàn)的所有的“1”,所得序列存入新建數(shù)組B中;3)統(tǒng)計數(shù)組B中出現(xiàn)的不同的元素,將這些不同的元素按出現(xiàn)的順序存入新建數(shù)組C中;4)將數(shù)組C中的元素按升序排序,排序后的序列存入新建數(shù)組D中;5)將數(shù)組D中第n個元素值使用數(shù)字n代替,所得序列存入新建數(shù)組E中;6)將數(shù)組D中元素和數(shù)組E中元素按照一一對應(yīng)的關(guān)系,對數(shù)組B中所有的元素進行替換,所得序列存入新建數(shù)組F中;7)將數(shù)組F中所有元素做上述第1)步驟的反變換,其中數(shù)組F中的第一位代碼為變量a中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組G中;8)將數(shù)組D中元素進行“后項減去相鄰前項”處理,結(jié)果存入新建數(shù)組H中,尋找數(shù)組H中第一個大于或等于2的元素位置,設(shè)此元素在數(shù)組H中的位置為n,將數(shù)組D中前n個元素全部刪除,剩余的元素順序存入新建數(shù)組I中;9)保存數(shù)組I和G為二進制文件,此二進制文件即為源文件無損壓縮后的文件。
      2.根據(jù)權(quán)利要求1所述的通用信息的無損壓縮方法,其特征在于步驟5)中,數(shù)字η以 1開始計數(shù)。
      3.根據(jù)權(quán)利要求1所述的通用信息的無損壓縮方法,其特征在于步驟8)中,元素位 置η以1開始計數(shù)。
      4.根據(jù)權(quán)利要求1、2或3所述的通用信息的無損壓縮方法,其特征在于步驟1)中, 所述源文件為未經(jīng)壓縮軟件壓縮過的數(shù)據(jù)信息,或者是經(jīng)壓縮軟件壓縮過的數(shù)據(jù)信息。
      5.一種通用信息的解壓縮方法,其步驟如下1)讀取數(shù)組G中的二進制序列,將數(shù)組G中第一位二進制代碼存入變量g中;2)用數(shù)組A中“持續(xù)0直至下一位是1”的長度替換“持續(xù)0直至下一位是1”中所出 現(xiàn)的所有的“0” ;用數(shù)組A中“持續(xù)1直至下一位是0”的長度替換“持續(xù)1直至下一位是 0”中所出現(xiàn)的所有的“1”,所得序列存入新建數(shù)組F中;3)統(tǒng)計數(shù)組F中出現(xiàn)的不同的元素及,將這些不同的元素按出現(xiàn)的順序存入新建數(shù)組 E中;4)將數(shù)組E中的元素按升序排序,排序后的序列存入新建數(shù)組D中;5)讀取數(shù)組I,設(shè)數(shù)組I中共有i個元素,將數(shù)組D中后i個元素使用數(shù)組I中的元素 替換,替換后的序列存入新建數(shù)組C中;6)將數(shù)組D中元素和數(shù)組C中元素按照一一對應(yīng)的關(guān)系,對數(shù)組F中所有的元素進行 替換,所得序列存入新建數(shù)組B中;7)將數(shù)組B中所有元素做上述第1)步驟的反變換,其中數(shù)組B中的第一位代碼為變 量g中所存的代碼,反變換后的二進制代碼序列存入新建數(shù)組A中,將數(shù)組A保存為文件, 該文件即為源文件。
      全文摘要
      本發(fā)明公開了一種通用信息的無損壓縮與解壓縮方法。所述的無損壓縮方法是通過對被壓縮的文件進行特殊的變換和處理得到,與現(xiàn)有技術(shù)相比,本發(fā)明所述壓縮方法不僅可對常見的文件格式數(shù)據(jù)進行無損壓縮,而且對已經(jīng)經(jīng)過常用壓縮軟件壓縮過的數(shù)據(jù)信息也能進一步再壓縮,使壓縮得到的文件所占用空間更小,可在原有的壓縮比的基礎(chǔ)上再去除1~80%的冗余(去除的冗余量情況視文件內(nèi)部數(shù)據(jù)冗余不同而不同),而且本發(fā)明所述壓縮方法算法簡單,易于實現(xiàn)。
      文檔編號H03M7/30GK101977061SQ201010515469
      公開日2011年2月16日 申請日期2010年10月19日 優(yōu)先權(quán)日2010年10月19日
      發(fā)明者王文延 申請人:廣西師范大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1