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

文档序号:12828615阅读:175来源:国知局
一种数据压缩方法和装置与流程

本发明属于数据压缩领域,尤其涉及一种数据压缩方法和装置。



背景技术:

数据压缩是指在不丢失有用信息的前提下,按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间,提高其传输、存储和处理效率的方法。通过数据压缩算法将需要存储、传送的数据进行压缩后,可以使用较小的存储空间存储更多的数据,并且在数据传输时,能够大大的节约网络资源,并且提高传输的效率。

目前,对数据进行压缩时,通常是选用现有的数据压缩工具,比如winrar、winzip、好压、360压缩等工具。并且不同的压缩工具所采用的压缩算法也可能不相同。因此,当用户使用压缩工具a进行压缩时,在不同的使用环境中,比如将压缩的数据发送至其它用户,或者将压缩的数据复制到其它设备中时,可能会由于压缩工具的不同,无法对数据进行有效的解压。需要用户在新的设备中安装对应的压缩工具,操作较为麻烦。



技术实现要素:

本发明的目的在于提供一种数据压缩方法和装置,以解决现有技术由于压缩工具多种多样,导致压缩的数据不能有效的适应不同的工具进行解压,用户操作不方便的问题。

第一方面,本发明实施例提供了一种数据压缩方法,所述方法包括:

接收数据压缩请求,获取需要压缩的数据以及压缩所述数据所选择的压缩算法;

根据所选择的压缩算法对需要压缩的数据进行压缩,得到压缩后的数据;

将所述压缩算法对应的标识添加到包头的第一指定位置,由所述压缩后的数据和包头生成压缩数据包。

结合第一方面,在第一方面的第一种可能实现方式中,在所述接收数据压缩请求,获取需要压缩的数据以及选择压缩所述数据所选择的压缩算法的步骤之后,所述方法还包括:

对需要压缩的数据进行循环冗余校验,生成循环冗余校验结果;

将所述循环冗余校验结果添加到所述包头的第二指定位置。

结合第一方面,在第一方面的第二种可能实现方式中,在所述接收数据压缩请求,获取需要压缩的数据以及选择压缩所述数据所选择的压缩算法的步骤之后,所述方法还包括:

获取压缩后的数据的长度以及需要压缩的数据的原始长度;

将所述压缩后的数据的长度写入所述包头的第三指定位置,以及将需要压缩的数据的原始长度写入包头的第四指定位置。

第二方面,本发明实施例提供了一种数据解压方法,所述方法包括:

接收数据解压请求,获取压缩数据包中的压缩后的数据所对应的压缩算法对应的标识,以及在压缩数据包的指定位置获取压缩后的数据;

根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据。

结合第二方面,在第二方面的第一种可能实现方式中,在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之后,所述方法还包括:

通过循环结果校验方法对解压的数据进行校验,生成解压数据的校验结果;

将所述解压数据的校验结果与存储在包头第二指定位置的校验结果进行比较,根据比较结果判断所述解压的数据的完整性。

结合第二方面,在第二方面的第二种可能实现方式中,在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之前,所述方法还包括:

获取包头的第三指定位置中存储的压缩后的数据的长度,以及所述压缩数据包中的压缩后的数据的长度,根据压缩后的数据的长度与存储的长度的比较结果判断数据是否完整;

以及在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之后,所述方法还包括:

获取包头的第四指定位置存储的压缩前的数据的长度,以及解压缩的数据的长度,根据解压缩的数据的长度与存储的长度的比较结果判断解压后的数据是否完整。

第三方面,本发明实施例提供了一种数据压缩装置,所述装置包括:

请求单元,用于接收数据压缩请求,获取需要压缩的数据以及压缩所述数据所选择的压缩算法;

压缩单元,用于根据所选择的压缩算法对需要压缩的数据进行压缩,得到压缩后的数据;

压缩数据包生成单元,用于将所述压缩算法对应的标识添加到包头的第一指定位置,由所述压缩后的数据和包头生成压缩数据包。

结合第三方面,在第三方面的第一种可能实现方式中,所述装置还包括:

校验单元,用于对需要压缩的数据进行循环冗余校验,生成循环冗余校验结果;

校验结果添加单元,用于将所述循环冗余校验结果添加到所述包头的第二指定位置。

结合第三方面,在第三方面的第二种可能实现方式中,所述装置还包括:

原始长度获取单元,用于获取压缩后的数据的长度以及需要压缩的数据的原始长度;

原始长度写入单元,用于将所述压缩后的数据的长度写入所述包头的第三指定位置,以及将需要压缩的数据的原始长度写入包头的第四指定位置。

第四方面,本发明实施例提供了一种数据解压装置,所述装置包括:

数据获取单元,用于接收数据解压请求,获取压缩数据包中的压缩后的数据所对应的压缩算法对应的标识,以及在压缩数据包的指定位置获取压缩后的数据;

解压单元,用于根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据。

在本发明中,在对数据进行压缩时,通过选择的压缩算法对需要压缩的数据进行压缩,并且将选择的压缩算法的标识添加包头的第一指定位置,由包头和压缩后的数据成生压缩数据包。当进行解压时,读取所述包头的第一指定位置的压缩算法的标识,调用对应的压缩算法对压缩的数据进行解压,得到解析的数据。通过压缩算法的标识的设定,可以使得本方法能够适应不同的算法的压缩文件的解压和压缩,有利于提高用户使用的便利性。

附图说明

图1是本发明第一实施例提供的数据压缩方法的实现流程图;

图2是本发明第二实施例提供的数据解压方法的实现流程图;

图3是本发明第三实施例提供的数据压缩装置的结构示意图;

图4为本发明第三实施例提供的数据解压装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明实施例的目的在于提供一种数据压缩方法和装置,以解决现有技术中由于压缩工具各种各样,并且不同的压缩工具所采用的压缩算法也会有所不同,导致不同的工具之间无法对压缩的数据包识别和解压。比如,当使用第一压缩算法的工具x进行文件压缩后,如果使用第二压缩算法的工具y进行文件解压时可能会解压失败。因而导致用户需要在终端安装多个压缩工具,操作较为麻烦。

实施例一:

图1示出了本发明第一实施例提供的数据压缩方法的实现流程,详述如下:

在步骤s101中,接收数据压缩请求,获取需要压缩的数据以及压缩所述数据所选择的压缩算法。

具体的,所述接收数据压缩请求,可以为用户需要对数据进行压缩时,调用本方法中的数据压缩程序接口,生成数据压缩请求。

所述需要压缩的数据,也就是用户所选择的需要压缩的文件。所述文件可以为音频文件、视频文件、文本文件或者其它文件等。所述需要压缩的数据,可以为一个文件,也可以为多个文件的组合。

所述压缩数据所选择的压缩算法,可以在得到需要压缩的数据后,对待压缩的数据取样本进行压缩测试分析和判断。比如,判断需要压缩的数据为视频文件,或者判断需要压缩的数据为音频文件,或者判断需要压缩的数据为文本文件等,根据文件的样本数据测试压缩结果,查找那种压缩算法压缩效果好,就选择那种压缩算法。当然,还可以根据用户的选择请求,由用户选择压缩算法。

所述压缩算法可以预先集成在本方法所对应的压缩工具中,或者可以将压缩算法集成在服务器中,当压缩工具选择了对应的压缩算法后,在本地或者服务器中获取对应的压缩算法。

在步骤s102中,根据所选择的压缩算法对需要压缩的数据进行压缩,得到压缩后的数据。

在步骤s101中选择了压缩算法后,根据选择的压缩算法,对需要压缩的数据进行压缩,得到压缩后的数据。所述压缩后的数据所占用的存储空间小于所述需要压缩的数据所占用的存储空间。

在步骤s103中,将所述压缩算法对应的标识添加到包头的第一指定位置,由所述压缩后的数据和包头生成压缩数据包。

根据选择的压缩算法,可以查找到所述压缩算法对应的标识。可以设置压缩算法与标识的对应关系,将压缩算法的类型通过少量的字节记录在包头的第一指定位置。比如,所述第一指定位置可以为少量的字节,可以为4个字节。

所述压缩的数据和包头成生压缩数据包后,即可对压缩后的数据包进行保存或者传输,可以供其它压缩工具进行解压操作,或者供本方法所对应的工具在其它设备中进行解压操作,得到解压后的数据,即压缩前的数据。

当然,作为本发明进一步优化的实施方式中,在所述接收数据压缩请求,获取需要压缩的数据以及选择压缩所述数据所选择的压缩算法的步骤之后,所述方法还包括:对需要压缩的数据进行循环冗余校验,生成循环冗余校验结果;将所述循环冗余校验结果添加到所述包头的第二指定位置。

所述包头可以设置第二指定位置,并在第二指定位置中存储循环冗余校验结果。其中,所述循环冗余校验结果是对需要压缩的数据进行循环冗余校验所生成。通过设置循环冗余校验结果,当对压缩包进行解压时,可以对解压后的数据进行循环冗余校验,从而验证压缩后的数据是否完整。如果校验出错,则说明压缩或者解压过程中,有数据丢失或者出错。

另外,进一步的优化方式中,在所述接收数据压缩请求,获取需要压缩的数据以及选择压缩所述数据所选择的压缩算法的步骤之后,所述方法还包括:

获取压缩后的数据的长度以及需要压缩的数据的原始长度;将所述压缩后的数据的长度写入所述包头的第三指定位置,以及将需要压缩的数据的原始长度写入包头的第四指定位置。

通过在包头设置压缩后的数据的长度,以及需要压缩的数据的原始长度。当用户对压缩包进行解压时,可以先根据包头中存储的压缩后的数据的长度,判断当前压缩后的数据的长度是否与第三指定位置存储的长度相符。如果相符则执行后续的解压操作,并且判断解压后的数据的长度是否与第四指定位置存储的长度相符,如果不相符则会发出报错提醒。

本发明所述数据压缩方法,可以选择所需要的压缩算法对需要压缩的数据进行压缩,因而可以生成不同压缩算法所对应的压缩包。可以适应不同解压工具的要求。并且采用与本方法对应的,如图2所示的解压方法,可以直接对不同算法压缩的数据包进行解压,大大的提高了用户使用的便利性。

实施例二:

图2示出了本发明第二实施例提供的数据解压方法的实现流程,详述如下:

在步骤s201中,接收数据解压请求,获取压缩数据包中的压缩后的数据所对应的压缩算法对应的标识,以及在压缩数据包的指定位置获取压缩后的数据。

与实施例一中的压缩方法对应的,本发明所述解压方法,接收数据解压请求,可以通过调用本方法中的数据解压缩程序接口,发起解压请求,或者通过打开本方法对应的工具,在工具中触发解压指令。

在对压缩包进行解压时,首先获取压缩数据包的包头的压缩算法的标识,以及所述压缩数据包的指定位置获取压缩后的数据。所述压缩后的数据可以存放在所述压缩数据包的包头的后面。

在步骤s202中,根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据。

根据所述压缩算法对应的标识,可以查找到对应的压缩算法。根据查找到的压缩算法,可以对压缩数据包中的压缩后的数据进行解压操作,可以适应不同压缩算法所对应的压缩后的数据的解压要求。

当然,所述压缩算法可以存储在本方法所对应的工具中,也可以存储在服务器中,当查找到对应的压缩算法后,可以从本地获取对应的压缩算法,也可以从服务器获取对应的压缩算法。

另外,作为本发明进一步优化,在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之后,所述方法还包括:

通过循环结果校验方法对解压的数据进行校验,生成解压数据的校验结果;将所述解压数据的校验结果与存储在包头第二指定位置的校验结果进行比较,根据比较结果判断所述解压的数据的完整性。

通过在包头设置循环校验结果,可以对解压后的数据进行校验,及时发现解压后的数据是否有过修改或者数据丢失。

另外,与实施例一中优化方式对应的,在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之前,所述方法还包括:

获取包头的第三指定位置中存储的压缩后的数据的长度,以及所述压缩数据包中的压缩后的数据的长度,根据压缩后的数据的长度与存储的长度的比较结果判断数据是否完整;

以及在所述根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据步骤之后,所述方法还包括:

获取包头的第四指定位置存储的压缩前的数据的长度,以及解压缩的数据的长度,根据解压缩的数据的长度与存储的长度的比较结果判断解压后的数据是否完整。

通过在包头的第一指定位置查找压缩算法所对应的标识,并根据查找的压缩算法,对压缩后的数据进行解压,因而本方法可以适应不同压缩工具所压缩后的数据的解压要求。有利于提高用户使用的方便性。并且通过与本方法对应的压缩方法生成压缩数据包,可大大的提高用户对数据采用不同压缩算法的需求。

实施例三:

图3示出了本发明第三实施例提供的数据压缩装置的结构示意图,详述如下:

本发明实施例所述数据压缩装置,包括:

请求单元301,用于接收数据压缩请求,获取需要压缩的数据以及压缩所述数据所选择的压缩算法;

压缩单元302,用于根据所选择的压缩算法对需要压缩的数据进行压缩,得到压缩后的数据;

压缩数据包生成单元303,用于将所述压缩算法对应的标识添加到包头的第一指定位置,由所述压缩后的数据和包头生成压缩数据包。

优选的,所述装置还包括:

校验单元,用于对需要压缩的数据进行循环冗余校验,生成循环冗余校验结果;

校验结果添加单元,用于将所述循环冗余校验结果添加到所述包头的第二指定位置。

优选的,所述装置还包括:

原始长度获取单元,用于获取压缩后的数据的长度以及需要压缩的数据的原始长度;

原始长度写入单元,用于将所述压缩后的数据的长度写入所述包头的第三指定位置,以及将需要压缩的数据的原始长度写入包头的第四指定位置。

图3所述数据压缩装置,与图1所述数据压缩方法对应,在此不作重复的描述。

另外,本发明还提供了一种数据解压装置,如图4所示,所述数据解压装置,包括:

数据获取单元401,用于接收数据解压请求,获取压缩数据包中的压缩后的数据所对应的压缩算法对应的标识,以及在压缩数据包的指定位置获取压缩后的数据;

解压单元402,用于根据所述标识查找对应的压缩算法,根据所述压缩算法对压缩后的数据进行解压缩,得到解压缩的数据。

优选的,所述装置还包括:

校验结果生成单元,用于通过循环结果校验方法对解压的数据进行校验,生成解压数据的校验结果;

校验结果比较单元,用于将所述解压数据的校验结果与存储在包头第二指定位置的校验结果进行比较,根据比较结果判断所述解压的数据的完整性。

优选的,所述装置还包括:

第一长度比较单元,用于获取包头的第三指定位置中存储的压缩后的数据的长度,以及所述压缩数据包中的压缩后的数据的长度,根据压缩后的数据的长度与存储的长度的比较结果判断数据是否完整;

第二长度比较单元,用于获取包头的第四指定位置存储的压缩前的数据的长度,以及解压缩的数据的长度,根据解压缩的数据的长度与存储的长度的比较结果判断解压后的数据是否完整。

本发明实施例中所述数据压缩装置、数据解压装置,分别与实施例一中所述数据压缩方法、实施例二中的数据解压方法对应。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1