发明内容
本发明实施例第一方面提供了一种数据压缩方法,可包括:
获取待压缩的原始数据文件;
查找所述原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d;
将所述预定数据及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段,从而压缩所述重复数据段。
结合第一方面,在第一方面的第一种可能的实施方式中,所述查找所述原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d包括:
从所述原始数据文件中读取数据长度为预定数据n倍的第一数据段,n为大于等于2的正整数;
判断所述第一数据段是否为n个连续重复的所述预定数据,若是,则记录所述预定数据的重复次数d为n;
读取数据长度与所述预定数据相同的第二数据段,并判断所述第二数据段是否为所述预定数据段,若是,则将所述d的数值增加1,并返回所述读取数据长度与所述预定数据相同的第二数据段的步骤。
结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述将所述预定数据及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段包括:
将所述第一数据段及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段。
结合第一方面的第一种可能的实施方式,在第一方面的第三种可能的实施方式中,在所述将所述d的数值增加1之后,还包括:
判断所述d的数值是否大于等于预定的最大值,如果是,执行所述将所述预定数据及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段的步骤。
结合第一方面,在第一方面的第四种可能的实施方式中,在将所述预定数据及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段之后,所述方法还包括:
将所述d的数值清零;
判断所述待压缩的原始数据文件是否压缩完毕,若否,返回所述查找所述原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d的步骤。
本发明实施例第二方面提供了一种数据解压方法,其特征在于,包括:
获取待解压的压缩数据文件,所述数据文件中包括至少一段压缩数据段,所述压缩数据段包括预定数据及所述预定数据连续重复的次数d;
读取所述压缩数据段中的预定数据及所述预定数据连续重复的次数d;
将连续重复d次的预定数据写入所述压缩数据文件以代替所述压缩数据段,从而将待解压的压缩数据文件解压。
结合第二方面,在第二方面的第一种实施方式中,所述压缩数据段包括n个连续重复的所述预定数据及所述预定数据连续重复的次数d,其中n为大于或等于2的正整数;
所述读取所述压缩数据段中的预定数据及所述预定数据连续重复的次数d包括:
从所述压缩数据文件中读取数据长度为预定数据n倍的第二数据段;
判断所述第二数据段是否为n个连续重复的所述预定数据,若是,则记录所述预定数据的重复次数d为n;
读取所述第二数据段之后的一个预定长度的第三数据段,从所述第三数据段中读取所述预定数据连续重复的次数d。
结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,所述将连续重复d次的预定数据写入所述压缩数据文件以代替所述压缩数据段包括:
将所述预定数据连续重复d次形成第四数据段,将所述第四数据段写入所述压缩数据文件以代替所述压缩数据段。
本发明实施例第三方面提供了一种数据压缩设备,其特征在于,包括输入装置、输出装置、处理器和存储器,其中,
所述输入装置用于获取待压缩的数据文件;
所述处理器用于执行如下方法:
查找所述数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d;
将所述预定数据及所述连续重复的次数d写入输出数据文件中以代替所述重复数据段,从而压缩所述重复数据段。
本发明实施例第四方面提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得所述计算机执行如本发明实施例中第一方面及第一方面的第一至第四种可能的实施方式以及第二方面及第二方面的第一或第二中可能的实施方式中任一项所述的方法。
本发明实施例第五方面提供了一种FPGA,包括输入装置、输出装置、处理器和存储器,其中所述输入装置用于读取原始的FPGA加载文件,所述处理器用于执行如本发明实施例中第一方面及第一方面的第一至第四种可能的实施方式中任一项所述的数据压缩方法对所述原始的FPGA加载文件进行压缩得到压缩后的FPGA加载文件,所述存储器用于存储所述压缩后的FPGA加载文件。
本发明实施例第六方面提供了一种FPGA,包括输入装置、输出装置、处理器和存储器,其中所述输入装置用于读取待解压的解压数据文件,所述处理器用于执行如本发明实施例中第二方面及第一方面的第一至第二种可能的实施方式中任一项所述的数据解压方法对原始的FPGA加载文件进行解压得到解压后的FPGA加载文件,所述存储器用于存储所述解压后的FPGA加载文件。
以上可以看出,本发明实施例中,当原始数据文件中的预定数据存在大量的连续的重复数据段时,压缩设备查找原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d,将所述预定数据及所述连续重复的次数d写入所述原始数据文件中以代替所述重复数据段,从而压缩所述重复数据段,而不必将大量的连续重复的该种预定数据展开记录,节省了存储空间。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解,下面对本发明实施例中的具体流程进行描述,请参阅图1,本发明实施例中数据压缩方法的一个实施例包括:
101、获取待压缩的原始数据文件;
当原始数据文件中存在对预定数据进行连续重复的重复数据段时,压缩设备可以获取该原始数据文件对其进行压缩流程,可以将该原始数据文件存储在可读取的存储介质中。
102、查找原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d;
用户可以根据需求设置一种或多种预定数据,压缩设备可以查找原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d,具体的查找方式将在下述的实施例中详细描述。
103、将预定数据及连续重复的次数d写入原始数据文件中以代替重复数据段;
在确定预定数据的连续重复次数之后,压缩设备可以将该预定数据及连续重复的次数d写入原始数据文件中以替代对应的重复数据段,而不必将大量的连续重复的该种预定数据展开记录,节省了存储空间。
以上可以看出,本发明实施例中,当原始数据文件中的预定数据存在大量的连续的重复数据段时,压缩设备查找原始数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d,将预定数据及连续重复的次数d写入原始数据文件中以代替重复数据段,从而压缩重复数据段,而不必将大量的连续重复的该种预定数据展开记录,节省了存储空间。
上述实施例对本发明实施例中数据压缩方法的流程进行了描述,为了便于理解,下面将对本发明实施例中数据压缩方法进行详细描述,请参阅图2,本发明实施例中数据压缩方法的另一个实施例可包括:
201、获取待压缩的原始数据文件;
当原始数据文件中存在对预定数据进行连续重复的重复数据段时,压缩设备可以获取该原始数据文件以启动压缩流程,可以将该原始数据文件存储在可读取的存储介质中。
202、从原始数据文件中读取数据长度为预定数据n倍的第一数据段;
为识别原始数据文件中的重复数据段,压缩设备可以从原始数据文件中读取数据长度为预定数据n倍的第一数据段进行进一步的判断,其中n为大于等于2的正整数。
203、判断第一数据段是否为n个连续重复的预定数据;
在读取到第一数据段之后,压缩设备可以判断第一数据段是否为n个连续重复的预定数据,若是,则执行步骤204,若否,则执行步骤207。
204、记录预定数据的重复次数d为n;
当第一数据段是n个连续重复的预定数据时,可以确定预定数据在当前已读取的数据中连续重复的次数d的数值为n次。
205、读取数据长度与预定数据相同的第二数据段,并判断第二数据段是否为预定数据段;
当第一数据段是n个连续重复的预定数据时,压缩设备可以继续判断后续的数据是否为预定数据的重复形式,具体的,压缩设备可以读取数据长度与预定数据相同的第二数据段,并判断第二数据段是否为预定数据段,若是,则执行步骤206;若否,则返回执行步骤202对后续的数据进行处理。
206、将d的数值增加1;
若第二数据段也是预定数据的重复形式则将d的数值增加1,并返回执行步骤205对后续的数据进行处理。
207、重新读取数据长度为预定数据n倍的数据段。
当第一数据段不是任何一种预定数据的重复形式时,压缩设备可以重新读取数据长度为预定数据n倍的数据段作为第一数据段,重新进行判断流程。
具体的,压缩设备重新读取的新的第一数据段可以由上一个第一数据段中,除去与预定数据长度相同的前端数据段之后的部分与后续相连续的数据段组成。
208、将预定数据及连续重复的次数d写入原始数据文件中以代替重复数据段;
在确定预定数据的连续重复次数之后,压缩设备可以将该预定数据及连续重复的次数d写入原始数据文件中以替代对应的重复数据段,而不必将大量的连续重复的该种预定数据展开记录,节省了存储空间。
具体的,压缩设备可以将第一数据段及连续重复的次数d写入原始数据文件中以代替重复数据段。
以上可以看出,本实施例中压缩设备读取原始数据文件中的部分数据作为第一目标压缩数据,在判定第一目标压缩数据为一种预置压缩数据的重复形式时,继续读取第二目标压缩数据,当判定第二目标压缩数据也为同一种预置压缩数据的重复时,记录该种预置压缩数据的重复次数,当该种预置压缩数据不再连续的重复时,压缩设备可以将第一目标压缩数据和该种预置压缩数据的重复次数写入压缩文件,而不必将连续重复的该种预置压缩数据逐一展开记录,节省了存储空间。
在上述实施例的基础上,优选的,在步骤206之后,还包括:
209、判断d的数值是否大于等于预定的最大值。
实际运用中,记录同一预定数据连续重复次数d的数据所占用的数位是有限的,即d的数值具有最大值,具体的最大值可以由用户根据需求设定,在步骤206之后可以断d的数值是否大于等于预定的最大值,若大于或等于最大值,则执行步骤208,若小于最大值,则执行步骤205。
在上述实施例的基础上,优选的,在将预定数据及连续重复的次数d写入原始数据文件中以代替重复数据段之后,还包括:
210、将d的数值清零;
211、判断待压缩的原始数据文件是否压缩完毕。
若待压缩的原始数据文件压缩完毕,则结束流程,若待压缩的原始数据文件未压缩完毕,则返回步骤202,循环执行压缩流程。
可以理解的是,本实施例中的压缩设备可以是FPGA或计算机及其他可以实现上述方法的设备,此处不做限定。
上述实施例对本发明实施例中的数据压缩方法进行了描述,下面将对本发明实施例中的数据解压方法进行描述,请参阅图3,本发明实施例中数据解压方法的一个实施例可包括:
301、获取待解压的压缩数据文件;
在需要对包括至少一压缩数据段的压缩数据文件解压时,解压设备可以先读取待解压的压缩数据文件,该文件中的压缩数据段包括预定数据及该预定数据连续重复的次数d。
302、读取压缩数据段中的预定数据及预定数据连续重复的次数d;
在对压缩数据段进行解压时,需要读取确定被压缩的预定数据的种类及连续重复的次数d,具体的确定方式将在下述的实施例中详细描述。
303、将连续重复d次的预定数据写入压缩数据文件以代替压缩数据段。
在确定预定数据的连续重复次数之后,解压设备可以将预定数据连续重复d次写入压缩数据文件以代替压缩数据段。
具体的,本实施例中的待解压数据文件可以是采用图1及图2所示的数据压缩方法对原始数据文件压缩得到的。
上述实施例对本发明实施例中的数据解压方法的流程进行了描述,为了便于理解,下面将对本发明实施例中的数据解压方法进行详细描述,请参阅图4,本发明实施例中数据解压方法的另一个实施例可包括:
401、获取待解压的压缩数据文件;
解压设备获取待解压的压缩数据文件,可以将该压缩数据文件存储在可读取的存储介质中,该数据文件中包含至少一压缩数据段,该压缩数据段包括n个连续重复的预定数据及预定数据连续重复的次数d,其中n为大于或等于2的正整数。
402、从压缩数据文件中读取数据长度为预定数据n倍的第三数据段;
解压设备要从压缩数据文件中逐步读取部分数据段进行解压,为确定压缩数据段,压缩设备可以从压缩数据文件中读取数据长度为预定数据n倍的第三数据段进行判断。
403、判断第三数据段是否为n个连续重复的预定数据;
压缩设备判断读取的第三数据段是否为压缩数据段,若是,则执行步骤404,若否,则执行步骤406。
404、读取第三数据段之后的一个预定长度的第四数据段;
压缩数据段在第三数据段之后的数据段中设置有预定长度的第四数据段用于记录预定数据连续重复,压缩设备可以读取该第四数据段,并从第四数据段中读取预定数据连续重复的次数d。
405、将连续重复d次的预定数据写入压缩数据文件以代替压缩数据段。
在确定预定数据的连续重复次数之后,解压设备可以将预定数据连续重复d次写入压缩数据文件以代替压缩数据段。
具体的,解压设备可以将预定数据连续重复d次形成第五数据段,将第五数据段写入压缩数据文件以代替压缩数据段。
406、重新读取数据长度为预定数据n倍的第三数据段。
具体的,解压设备重新读取的新的第三数据段可以由上一个第三数据段中,除去与预定数据长度相同的前端数据段之后的部分与后续相连续的数据段组成。
优选的,在步骤405之后本实施例还可以包括:
407、判断压缩数据文件是否读取完成。
解压设备判断压缩数据文件是否读取完成,若完成,则结束,若未完成,则返回步骤402,循环解压。
下面将对本发明实施例中的数据压缩500设备进行描述,请参阅图5,本发明实施例中的数据压缩设备的一个实施例可包括:
输入装置501、输出装置502、处理器503和存储器504,其中,
输入装置501用于获取待压缩的数据文件;
处理器503用于执行如下方法:
查找数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d;
将预定数据及连续重复的次数d写入输出数据文件中以代替重复数据段,从而压缩重复数据段。
优选的,处理器具体用于:
从输入数据文件中读取数据长度为预定数据n倍的第一数据段,n为大于等于2的正整数;
判断第一数据段是否为n个连续重复的预定数据,若是,则记录预定数据的重复次数d为n;
读取数据长度与预定数据相同的第二数据段,并判断第二数据段是否为预定数据段,若是,则将d的数值增加1,并返回读取数据长度与预定数据相同的第二数据段的步骤。
优选的,处理器503具体用于:
将第一数据段及连续重复的次数d写入输出数据文件中以代替重复数据段。
优选的,处理器503还用于:
判断d的数值是否大于等于预定的最大值,如果是,执行将预定数据及连续重复的次数d写入输出数据文件中以代替重复数据段的步骤。
优选的,处理器503还用于:
将d的数值清零;
判断待压缩的输入数据文件是否压缩完毕,如果否,返回查找输入数据文件中存在的对预定数据进行连续重复的重复数据段,并确定连续重复的次数d的步骤。
本实施例中的数据压缩设备的具体功能与上述图1及图2中描述的类似,具体请参阅图1及图2所示的实施例,此处不再赘述。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机可以执行上述图1或图2或图3或图4中所示方法。
本发明实施例还提供了一种FPGA,包括输入装置、输出装置、处理器和存储器,其中输入装置用于读取原始的FPGA加载文件,处理器用于执行上述图1或图2中所示的数据压缩方法对原始的FPGA加载文件进行压缩得到压缩后的FPGA加载文件,存储器用于存储压缩后的FPGA加载文件。
本发明实施例还提供了一种FPGA,包括输入装置、输出装置、处理器和存储器,其中输入装置用于读取待解压的解压数据文件,处理器用于执行上述图3或图4中所示的数据解压方法对原始的FPGA加载文件进行解压得到解压后的FPGA加载文件,存储器用于存储解压后的FPGA加载文件。
本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在一个计算机可读取存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。