本发明是一种查表代换式二进制数据可逆性压缩方法,为很大的数据或有一定规律的数据的压缩提供便利。
技术背景
目前,因可逆性压缩技术发展缓慢,严重制约了计算机和电子信息业的发展。
技术实现要素:
为了更好的对很大的数据或有一定规律的数据进行可逆性压缩,本发明创造了一种二进制数据可逆性压缩的重复压缩方法,有效的提高了很大的数据的压缩率。
首先,制定以两种数据的组合能表示所有二进制数据的有规律的数据表1。即:以数据首位是1的10=a、110=b、100=c、1100=d以及需和a、b、c、d组合使用的11=e、00=f或10=a、110=b、100=c、1110=d、1000=e、1100=f、11100=g、11000=h、111000=i以及需和a、b、c等组合使用的111=j、000=k等以此类退;以数据首位是0的01=a、001=b、011=c、0011=d以及需和a、b、c、d组合使用的11=e、00=f或01=a、001=b、011=c、0001=d、0111=e、0011=f、00011=g、00111=h、000111=i以及需和a、b、c等组合使用的111=j、000=k等以此类退;以10=a、110=b、100=c、1100=d及需组合使用的11=e、00=f为例,e和f不能单独或组合使用,e和a、b、c、d组合使用时只能在前如ea、eea等,f和a、b、c、d组合使用时只能在后如af、aff等(其中对应字母可用其它能区分的标示)。
然后,将需压缩的数据以首位数据开始分成以两种相邻数据为一组的数据段,如数据分段到最后只有一种数据,补齐1位另一种数据并做标记;按数据段查以上所制定的表1将原始数据代换成以表1中的字母表示的1次代换数据。
再将表1中的字母2个一组(或3个、4个等一组)组成表2;如aa=a、ab=b、ac=c、ad=d、ae=e、af=f、ba=g、bb=h、bc=i、bd=j、be=k、bf=l…能包括所有表1中字母的组合形成表2(其中对应字母可用其它能区分的标示)。将1次代换数据以首位数据开始分成以两种相邻数据为一组(或3个、4个等一组)的数据段,如数据分段到最后只有一种数据,补齐1位本位(或其它一位标示)数据并做标记;根据表2将表1中的字母表示的1次代换数据代换成以表2中的字母表示的2次代换数据。(此步骤可多次重复,重复以次后将组成表3,下一步是将3次代换数据中的字母进行统计开始以此类推)
将2次代换数据中的字母进行统计,根据重复最多的字母到最少的依次排列,相同次数的以字母本来的顺序排列;然后用能区分的二进制数据段,如1、10、100、1000、10000等(或者是0、01、011、0111、01111等及10、110、100、1100等,以及用位数来区分如2位的00、01、10、11或3位的000、001等)和依次排列的字母对照,以最大限度的减少字母所表示的数据位数为目的用二进制数据代换字母形成数据表3;再将2次代换数据代换成以表3中的二进制表示的3次代换数据。
再将3次代换数据以原始数据的形式进行压缩,直到最初原始数据的压缩率达到最小。
文件的解压,就是通过表1表2表3及所做的标记逆操作以上的压缩过程。
因所组成的表除表3外是约定不变的,所以压缩后的数据只需有表3和最终数据。
具体实施方式
将以下原始数据进行压缩:
{10010101001111010001010001011111101000100010100101000010001010010010100100110110}
制定数据表1。即:10=a、110=b、100=c、1100=d、11=e、00=f。
将原始数据代换成以表1中的字母表示的1次代换数据:
{caacebafaafaeebafafacacfafaccaccbb}
制定数据表2。即:aa=a、ac=b、af=c、ba=d、bb=e、ca=f、cc=g、cf=h、eb=i、ee=j、fa=k…因太多不一一列举。
将1次代换数据代换成以表2中的字母表示的2次代换数据:
{fbicakjdkkfhcbfge}
统计字母重复的次数:f重复3次,k重复3次,b重复2次,c重复2次,a、d、e、g、h、i、j为1次。形成表3即:0000=f、0001=k、0010=b、0011=c、0100=a、0101=d、0110=e、0111=g、1000=h、1001=i、1010=j。
将2次代换数据代换成以表3中的二进制表示的3次代换数据:
{00000010100100110100000110100101000100010000100000110010000001110110}
以上是对本发明进行详细的说明。应当说明的是,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。