一种数据压缩方法与装置和数据解压缩方法与装置与流程

文档序号:14897309发布日期:2018-07-08 08:46阅读:128来源:国知局
本发明涉及计算机应用
技术领域
,更具体的说,涉及一种数据压缩方法与装置和数据解压缩方法与装置。
背景技术
:计算机应用已经深入各个领域,各类电子文件的数量和占用存储空间以几何级数增长,导致数据存储设备的需求量越来越大。文件压缩后的数据容量减小后,磁盘访问输入/输出(i/o)的时间会缩短,尽管压缩和解压缩过程会消耗cpu资源,但是cpu计算资源增长很快,但是磁盘i/o资源却变化很慢,因此如果能够将磁盘的i/o压力转化到cpu上,总体上能够提升系统运行速度。而且,数据压缩后,可以显著加快在互联网上的传输效率。计算机的文件压缩算法通常包括无损压缩算法和有损压缩算法。常用的无损压缩算法包括香农-范诺编码、霍夫曼编码、算术编码、行程编码(rle)、词典编码等。有损压缩算法不能完全恢复原始数据。在现有技术中,主流的无损压缩算法通常压缩比率低,而且解压缩需要耗费大量时间。技术实现要素:本发明提出一种数据压缩方法与装置,从而提高压缩比率。本发明还提出一种数据解压缩方法与装置,从而降低解压缩时间。本发明实施方式的技术方案如下:一种数据压缩方法,包括:读取原始数据;将所述原始数据转换为十进制数据,并从所述十进制数据中按照预定分段连续提取数字字符串;将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于所述提取出的数字字符串的数学表达式;利用确定的数学表达式替换所述提取出的数字字符串。在一个实施方式中,将所述原始数据转换为十进制数据之前,该方法还包括:判断所述原始数据是否为二进制数据,如果是,则执行所述将原始数据转换为十进制数据;如果不是,则将原始数据转换为二进制数据,并将所述二进制数据转换为十进制数据。在一个实施方式中,所述将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于提取出的数字字符串的数学表达式包括:将提取出的数字字符串与所述数据词典进行比对;当所述数据词典中存在与所述提取出的数字字符串相对应的预定数学表达式时,将所述相对应的预定数学表达式确定为提取出的数字字符串的数学表达式;当所述数据词典中不存在与所述提取出的数字字符串相对应的预定数学表达式时,基于数据值接近程度在数据词典中确定预定数目个预定数字字符串;以所述预定数目个预定数字字符串中的每一个预定数字字符串为基础,分别运算出所述提取出的数字字符串,从而得到每个预定数字字符串的数学表达式,将字符数最少的数学表达式确定为提取出的数字字符串的数学表达式,并将该字符数最少的数学表达式和提取出的数字字符串作为新的对应关系存入数据词典。在一个实施方式中,该方法还包括:在第一个提取的数字字符串之前,添加压缩起始标识;在最后一个提取的数字字符串之后,添加压缩结束标识;在各个数字字符串之间,添加字符串间隔标识。一种数据压缩装置,包括:数据读取单元,用于读取原始数据;字符串提取单元,用于将所述原始数据转换为十进制数据,并从所述十进制数据中按照预定分段连续提取数字字符串;数学表达式确定单元,用于将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于所述提取出的数字字符串的数学表达式;替换单元,用于利用确定的数学表达式替换所述提取出的数字字符串。在一个实施方式中,还包括:数据处理单元,用于字符串提取单元将所述原始数据转换为十进制数据之前,判断所述原始数据是否为二进制数据,如果是,则使能字符串提取单元执行所述将原始数据转换为十进制数据;如果不是,则将所述原始数据转换为二进制数据,并使能字符串提取单元将所述二进制数据转换为十进制数据。在一个实施方式中,数学表达式确定单元,用于将提取出的数字字符串与所述数据词典进行比对;当所述数据词典中存在与所述提取出的数字字符串相对应的预定数学表达式时,将所述相对应的预定数学表达式确定为提取出的数字字符串的数学表达式;当所述数据词典中不存在与所述提取出的数字字符串相对应的预定数学表达式时,基于数据值接近程度在数据词典中确定预定数目个预定数字字符串;以所述预定数目个预定数字字符串中的每一个预定数字字符串为基础,分别运算出所述提取出的数字字符串,从而得到每个预定数字字符串的数学表达式,将字符数最少的数学表达式确定为提取出的数字字符串的数学表达式,并将该字符数最少的数学表达式和提取出的数字字符串作为新的对应关系存入数据词典。一种数据解压缩方法,包括:读取利用如上的数据压缩方法被压缩的压缩数据;从所述压缩数据中提取出数学表达式,确定所述数学表达式的计算结果;利用所述计算结果替换所述数学表达式以生成预定位数的十进制数据,并将所述预定位数的十进制数据转换为二进制数据,其中所述预定位数对应于所述预定分段。在一个实施方式中,所述压缩数据包含第一个数学表达式之前的压缩起始标识、最后一个数学表达式之后的压缩结束标识以及在各个数学表达式之间的字符串间隔标识。一种数据解压缩装置,包括:读取单元,用于读取利用如上的数据压缩方法被压缩的压缩数据;计算结果确定单元,用于从所述压缩数据中提取出数学表达式,确定所述数学表达式的计算结果;替换单元,用于利用所述计算结果替换所述数学表达式以生成预定位数的十进制数据,并将所述预定位数的十进制数据转换为二进制数据,其中所述预定位数对应于所述预定分段。从上述技术方案可以看出,本发明实施方式包括:读取原始数据;将原始数据转换为十进制数据,并从十进制数据中按照预定分段连续提取数字字符串;将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于提取出的数字字符串的数学表达式;利用确定的数学表达式替换提取出的数字字符串。由此可见,本发明实施方式基于数学表达式来替换数字字符串,可以提高压缩比率。而且,数据词典的数据会随着实际压缩运算不断自主扩充和优化。另外,在解压缩端,可以根据数学表达式的计算结果还原数据,而无需参考数据词典,因此本发明实施方式还可以降低解压缩时间。附图说明图1为根据本发明实施方式的数据压缩方法流程图;图2为根据本发明实施方式的数据压缩处理示意图。图3为根据本发明实施方式的数据压缩方法示范性流程图。图4为根据本发明实施方式的数据解压缩处理示意图。图5为根据本发明实施方式的数据解压缩方法示范性流程图。图6为根据本发明实施方式的数据压缩装置结构图。图7为根据本发明实施方式的数据解压缩装置结构图。具体实施方式为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。为了描述上的简洁和直观,下文通过描述若干代表性的实施方式来对本发明的方案进行阐述。实施方式中大量的细节仅用于帮助理解本发明的方案。但是很明显,本发明的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本发明的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”。由于汉语的语言习惯,下文中没有特别指出一个成分的数量时,意味着该成分可以是一个也可以是多个,或可理解为至少一个。本发明实施方式提出一种在计算机文件存储、传输领域实现的数据压缩算法,利用数学计算、数据字典、循环迭代算法等处理实现文件的压缩和解压缩。本发明实施方式的文件压缩方法主要应用于计算机文件存储、传输的业务场景;比如,需要长期保存,短时间内不再使用的电子文件,尤其是占用存储空间巨大的gb级、tb级甚至pb级的文件,将文件压缩到1mb以内进行长期存储,这样可以占用的存储空间非常少,而且复制文件或在互联网上传输都变得更快捷。图1为根据本发明实施方式的数据压缩方法流程图。如图1所示,该方法包括:步骤101:读取原始数据。步骤102:将原始数据转换为十进制数据,并从十进制数据中按照预定分段连续提取数字字符串。比如,预定分段可以为32位。显然,预定分段的位数还可以改为24位、34位、64位、128位等不同长度的数字。在一个实施方式中,还包括:在第一个提取的数字字符串之前,添加压缩起始标识;在最后一个提取的数字字符串之后,添加压缩结束标识;在各个数字字符串之间,添加字符串间隔标识。步骤103:将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于提取出的数字字符串的数学表达式。在这里,将提取出的数字字符串依次与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于提取出的数字字符串的数学表达式,具体包括:将提取出的数字字符串与数据词典进行比对;当数据词典中存在与提取出的数字字符串相对应的预定数学表达式时,将相对应的预定数学表达式确定为提取出的数字字符串的数学表达式;当数据词典中不存在与提取出的数字字符串相对应的预定数学表达式时,基于数据值接近程度在数据词典中确定预定数目个预定数字字符串;以预定数目个预定数字字符串中的每一个预定数字字符串为基础,分别运算出提取出的数字字符串,从而得到每个预定数字字符串的数学表达式,将字符数最少的数学表达式确定为提取出的数字字符串的数学表达式,并将该字符数最少的数学表达式和提取出的数字字符串作为新的对应关系存入数据词典。其中,数据词典保存有使用数据压缩运算的基础数据词条,其内容为数学表达式(包括数字与数学计算表达式)及与对应的数字字符串(比如,32位)。并在实际数据压缩运算中,保存得出的新数据词条,或利用位数更短的数据词条替换原有数据词条。比如,数据词典可以包含32长位数数字字符串与对应的数字表达式的对应记录。其中数学表达式对应的是计算为数据后去掉小数点后取前32位的数字字符串。表1为数据词典的示范性结构表。长位数数字字符串数学表达式0000000000000000000000000000000110000000000000000000000000000000220000000000000000000000000000000550000000000000000000000000100000010x60000000000000000000000000100000510x6+506989700043360188047862611052755log569897000433601880478626110527551log5*1001218693434051474811128939192315sin712186934340514748111289391923153sin7*1009925461516413220349800615893305cos709030899869919435856412166841734log8表1该数据词典的数据会随着实际压缩运算不断自主扩充和优化。假定新需要对比的长位数数字字符串为“00000000000000000000000001000007”,表1中并无直接对应的数学表达式。基于数据值接近程度在数据词典中确定出与“00000000000000000000000001000007”最接近的2个已有数字字符串。分别为:(1)、“00000000000000000000000001000000”(2)、“00000000000000000000000001000005”(1)所对应的数学表达式为10x6,由10x6运算出“00000000000000000000000001000007”的数学表达式为10x6+7。(2)所对应的数学表达式为10x6+5,由10x6+5运算出“00000000000000000000000001000007”的数学表达式为10x6+5+2。由于10x6+7的字符数少于10x6+5+2的字符数,因此将10x6+7确定为“00000000000000000000000001000007”的数学表达式,并将10x6+7的数学表达式和“00000000000000000000000001000007”作为新的对应关系存入数据词典。步骤104:利用确定的数学表达式替换提取出的数字字符串。在这里,针对每个提取出的数字字符串,分别利用各自的数学表达式予以替代,即可实现压缩。在一个实施方式中,将原始数据转换为十进制数据之前,该方法还包括:判断原始数据是否为二进制数据,如果是,则执行将原始数据转换为十进制数据;如果不是,则将原始数据转换为二进制数据,并将二进制数据转换为十进制数据。在一个实施方式中,在利用确定的数学表达式替换提取出的数字字符串之后,进一步判断替换后数据大小是否小于设置值,如果是,则流程结束,如果否,则将替换后数据转换为二进制数据,并返回继续执行步骤102,以实现多重压缩。图2为根据本发明实施方式的数据压缩处理示意图。如图2所示:原始数据读取模块按照设置读取计算机数据文件或通过接口获取传输来的数据流;数据压缩计算模块可以将原始数据读取模块读取的数据,参考数据词典模块中已有数学表达式,按照图1所示的压缩计算规则进行数据压缩,并将得出的压缩数据由压缩数据输出模块予以输出。基于上述描述,下面详细说明数据压缩方法的示范性流程。图3为根据本发明实施方式的数据压缩方法示范性流程图。如图3所示,包括:步骤(1):获取原始数据读取模块读取的数据。步骤(2):确定该数据是否为二进制数据。如果否,则跳转到步骤(3),如果是,则跳转到步骤(4)。步骤(3):将数据转化为二进制数据。步骤(4):分段(比如,16位或8位)截取数据并转换为十进制数字。步骤(5):针对该十进制数字,按照每32个连续数字截取,从而得到多个数字字符串。步骤(6):判断是否是第一个截取的字符串,如果是,则跳转到步骤(7),如果否,则跳转到步骤(8)。步骤(7):添加数据压缩起始标识信息。步骤(8):添加数字字符串间隔标识信息。步骤(9):将截取的字符串与数据已有数据比对。步骤(10):判断数据词典中是否存在截取的字符串,如果是,则跳转到步骤(11),如果否,则跳转到步骤(12)。步骤(11):提取数据词典中对应的数学表达式。步骤(12):在数据词典查找数据值最接近的预定数目个基础词条,并以这些词条为基础进行自主数据运算,获取字符数最少的数学表达式,将数学表达式和字符串作为词条存入数据词典。步骤(13):用获取的数学表达式替换提取的数字字符串。步骤(14):判断是否是最后一个字符串,如果是,执行步骤(15),否则返回执行步骤(5)。步骤(15):添加数据压缩结束标识信息步骤(16):判断压缩后的总体数据大小是否小于设置值,如果是,则流程结束,如果否,则跳转到步骤(3),从而继续将数据转化为二进制数据以循环迭代压缩。可见,本发明实施方式可以实现循环迭代压缩,可将占用存储空间巨大的gb级、tb级甚至pb级的数据文件,压缩到1mb以内,数据压缩率极高,而且数据还原不失真。基于上述描述,本发明实施方式还提出了一种的数据解压缩方法。图4为根据本发明实施方式的数据解压缩处理示意图。在图4中,压缩数据读取包括:按照设置读取压缩数据文件或通过接口获取传输来的数据流。数据解压缩计算包括:将压缩数据读取模块读取的压缩数据,按照后述的解压缩方法进行数据压缩,并将得出的还原数据由还原数据输出模块输出。图5为根据本发明实施方式的数据解压缩方法示范性流程图。如图5所示,该方法包括:步骤501:读取利用如图1的数据压缩方法被压缩的压缩数据.步骤502:从压缩数据中提取出数学表达式,确定数学表达式的计算结果。步骤503:利用计算结果替换所述数学表达式以生成预定位数的十进制数据,并将预定位数的十进制数据转换为二进制数据,其中预定位数对应于图1的步骤102的预定分段。在一个实施方式中,压缩数据包含第一个数学表达式之前的压缩起始标识、最后一个数学表达式之后的压缩结束标识以及在各个数学表达式之间的字符串间隔标识。基于上述描述,下面详细说明数据解压缩方法的示范性流程。图5为根据本发明实施方式的数据解压缩方法示范性流程图。如图5所示,该方法包括:步骤(1):获取利用上述压缩方法被压缩的数据。步骤(2):基于数据压缩起始标识信息、间隔标识信息、数据压缩结束标识信息的区分作用,获取各个数学表达式。步骤(3):将每个数学表达式通过计算转换为32位的数字字符串。步骤(4):去掉所有标识信息,按照数学表达式出现的顺序拼接所有的数字字符串。步骤(5):将各个十进制数字字符串转化为固定位数的二进制数字。步骤(6):判断转换处理后的数据是否是本发明的压缩数据,如果否,则流程结束,如果是,则跳转到步骤(2)。可见,在解压缩时,可以直接根据数学表达式的计算结果确定数据,而无需参考数据词典。因此,解压缩时间和效率得到了显著提升。基于上述描述,本发明实施方式还提出了一种数据压缩装置。图6为根据本发明实施方式的数据压缩装置结构图。如图6所示,数据压缩装置600包括:数据读取单元601,用于读取原始数据;字符串提取单元602,用于将原始数据转换为十进制数据,并从十进制数据中按照预定分段连续提取数字字符串;数学表达式确定单元603,用于将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于所述提取出的数字字符串的数学表达式;替换单元604,用于利用确定的数学表达式替换提取出的数字字符串。在一个实施方式中,数据压缩装置600还包括:数据处理单元,用于字符串提取单元将原始数据转换为十进制数据之前,判断原始数据是否为二进制数据,如果是,则使能字符串提取单元执行将原始数据转换为十进制数据;如果不是,则将原始数据转换为二进制数据,并使能字符串提取单元将二进制数据转换为十进制数据。在一个实施方式中,数学表达式确定单元603,用于将提取出的数字字符串与数据词典进行比对;当数据词典中存在与所述提取出的数字字符串相对应的预定数学表达式时,将相对应的预定数学表达式确定为提取出的数字字符串的数学表达式;当数据词典中不存在与提取出的数字字符串相对应的预定数学表达式时,基于数据值接近程度在数据词典中确定预定数目个预定数字字符串;以预定数目个预定数字字符串中的每一个预定数字字符串为基础,分别运算出提取出的数字字符串,从而得到每个预定数字字符串的数学表达式,将字符数最少的数学表达式确定为提取出的数字字符串的数学表达式,并将该字符数最少的数学表达式和提取出的数字字符串作为新的对应关系存入数据词典。基于上述描述,本发明实施方式还提出了一种数据解压缩装置。图7为根据本发明实施方式的数据解压缩装置结构图。如图7所示,数据解压缩装置700包括:读取单元701,用于读取利用如图1描述的数据压缩方法被压缩的压缩数据;计算结果确定单元702,用于从压缩数据中提取出数学表达式,确定数学表达式的计算结果;替换单元703,用于利用计算结果替换数学表达式以生成预定位数的十进制数据,并将预定位数的十进制数据转换为二进制数据,其中预定位数对应于预定分段。用户可以在各种智能设备上应用本发明的数据压缩和解压缩方法。这些智能设备可以包括但是不局限于:功能手机、智能手机、智能电视、掌上电脑、平板电脑或个人数字助理(pda),等等。以上虽然详细罗列了智能设备的具体实例,本领域人员可以意识到,这些罗列仅是阐述目的,并不用于限定本发明实施方式的保护范围。而且,智能设备可以适用于任意的智能设备操作系统,具体可以采用的操作系统包括但是不局限于:安卓(android)、palmos、symbian(塞班)、windowsmobile、linux、android(安卓)、iphone(苹果)os、blackberry(黑莓)os6.0、windowsphone系列,等等。优选地,智能设备具体可以采用安卓操作系统,而且终端可以采用到android的各个版本之中,包括但是不局限于:阿童木(androidbeta)、发条机器人(android1.0)、纸杯蛋糕(android1.5)、甜甜圈(android1.6)、松饼(android2.0/2.1),冻酸奶(android2.2)、姜饼(android2.3)、蜂巢(android3.0)、冰激凌三明治(android4.0)、果冻豆(jellybean,android4.1)等版本。以上详细罗列了android平台的具体版本,本领域技术人员可以意识到,本发明实施方式并不局限于上述罗列版本,而还可以适用于其他基于android软件架构的任意版本之中。需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。各实施方式中的硬件模块可以以机械方式或电子方式实现。例如,一个硬件模块可以包括专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件模块也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。至于具体采用机械方式,或是采用专用的永久性电路,或是采用临时配置的电路(如由软件进行配置)来实现硬件模块,可以根据成本和时间上的考虑来决定。本发明还提供了一种机器可读的存储介质,存储用于使一机器执行如本发明实施方式所述方法的指令。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施方式中任一实施方式的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。此外,还可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作。还可以将从存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施方式中任一实施方式的功能。用于提供程序代码的存储介质实施方式包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。综上所述,本发明实施方式包括:读取原始数据;将原始数据转换为十进制数据,并从十进制数据中按照预定分段连续提取数字字符串;将提取出的数字字符串与包含预定数字字符串与预定数学表达式的对应关系的数据词典进行匹配,并基于匹配结果确定对应于提取出的数字字符串的数学表达式;利用确定的数学表达式替换提取出的数字字符串。由此可见,本发明实施方式基于数学表达式来替换数字字符串,可以提高压缩比率。而且,数据词典的数据会随着实际压缩运算不断自主扩充和优化。另外,在解压缩端,可以根据数学表达式的计算结果还原数据,而无需参考数据词典,因此本发明实施方式还可以降低解压缩时间。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1