一种通用信息的无损压缩与解压缩方法技术

技术编号:5144872 阅读:259 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种通用信息的无损压缩与解压缩方法。所述的无损压缩方法是通过对被压缩的文件进行特殊的变换和处理得到,与现有技术相比,本发明专利技术所述压缩方法不仅可对常见的文件格式数据进行无损压缩,而且对已经经过常用压缩软件压缩过的数据信息也能进一步再压缩,使压缩得到的文件所占用空间更小,可在原有的压缩比的基础上再去除1~80%的冗余(去除的冗余量情况视文件内部数据冗余不同而不同),而且本发明专利技术所述压缩方法算法简单,易于实现。

【技术实现步骤摘要】

本专利技术涉及一种数据的无损压缩与解压缩方法,具体涉及一种通用信息的无损压 缩与解压缩方法。
技术介绍
无损压缩是利用数据的统计冗余进行压缩,可完全回复原始数据而不引起任何失 真。当今,各种信息系统的数据量越来越大,如何更快、更多、更好地传输与无损存储数据成 为数据信息处理的首要问题,而数据无损压缩技术则是解决这一问题的重要方法。数据无损压缩技术早已应用于各个领域,但压缩率是受到数据统计冗余度的理论 限制,目前流行的Winzip.Winrar等软件压缩后的信息,都不能进行再次无损压缩。
技术实现思路
本专利技术要解决的技术问题是提供一种不仅对常见的文件格式数据能够无损压缩, 而且对已经经过常用压缩软件压缩过的数据信息也能进一步再压缩的压缩与解压缩方法; 由本专利技术所述压缩方法压缩得到的文件所占用空间更小。为解决上述技术问题,本专利技术采用以下技术方案一种通用信息的无损压缩方法,其步骤如下1)以二进制方式读取源文件,所得二进制序列存入新建数组A中,将数组A中的第 一位二进制代码存入变量a中;2)用数组A中“持续0直至下一位是1”的长度替换“持续0直至下一位是1”中 所出现的所有的“0”;用数组A中“持续1直至下一位是0”的长度替换“持续1直至下一位 是0”中所出现的所有的“1”,所得序列存入新建数组B中;3)统计数组B中出现的不同的元素,将这些不同的元素按出现的顺序存入新建数 组C中;4)将数组C中的元素按升序排序,排序后的序列存入新建数组D中;5)将数组D中第η个元素值使用数字η代替,所得序列存入新建数组E中;6)将数组D中元素和数组E中元素按照一一对应的关系,对数组B中所有的元素 进行替换,所得序列存入新建数组F中;7)将数组F中所有元素做上述第1)步骤的反变换,其中数组F中的第一位代码为 变量a中所存的代码,反变换后的二进制代码序列存入新建数组G中;8)将数组D中元素进行“后项减去相邻前项”处理,结果存入新建数组H中,寻找 数组H中第一个大于或等于2的元素位置,设此元素在数组H中的位置为n,将数组D中前 η个元素全部删除,剩余的元素顺序存入新建数组I中;9)保存数组I和G为二进制文件,此二进制文件即为源文件无损压缩后的文件。其中步骤5)中,数字η以1开始计数。步骤8)中,元素位置η以1开始计数。步骤1)中,所述源文件可为未经压缩软件压缩过的数据信息,即常见的文件格式 数据,还可以是经PAQ,winrk, ffinzip, winrar等压缩软件压缩过的数据信息。本专利技术所述的通用信息的解压缩方法,其步骤如下1)读取数组G中的二进制序列,将数组G中第一位二进制代码存入变量g中;2)用数组A中“持续0直至下一位是1”的长度替换“持续0直至下一位是1”中 所出现的所有的“0”;用数组A中“持续1直至下一位是0”的长度替换“持续1直至下一位 是0”中所出现的所有的“ 1 ”,所得序列存入新建数组F中;3)统计数组F中出现的不同的元素及,将这些不同的元素按出现的顺序存入新建 数组E中;4)将数组E中的元素按升序排序,排序后的序列存入新建数组D中;5)读取数组I,设数组I中共有i个元素,将数组D中后i个元素使用数组I中的 元素替换,替换后的序列存入新建数组C中;6)将数组D中元素和数组C中元素按照一一对应的关系,对数组F中所有的元素 进行替换,所得序列存入新建数组B中;7)将数组B中所有元素做上述第1)步骤的反变换,其中数组B中的第一位代码 为变量g中所存的代码,反变换后的二进制代码序列存入新建数组A中,将数组A保存为文 件,该文件即为源文件。与现有技术相比,本专利技术所述压缩方法不仅可对常见的文件格式数据进行无损压 缩,而且对已经经过常用压缩软件压缩过的数据信息也能进一步再压缩,使压缩得到的文 件所占用空间更小,可在原有的压缩比的基础上再去除1 80%的冗余(去除的冗余量情 况视文件内部数据冗余不同而不同),而且本专利技术所述压缩方法算法简单,易于实现。附图说明图1为对源文件进行无损压缩的流程图;图2为对压缩文件进行解压缩的流程图。图中标号为101、以二进制方式读取源文件,所得二进制序列存入新建数组A中,将数组A中的 第一位二进制代码存入变量a中;102、用数组A中“持续0直至下一位是1”的长度替换“持续0直至下一位是1”中 所出现的所有的“0”;用数组A中“持续1直至下一位是0”的长度替换“持续1直至下一位 是0”中所出现的所有的“1”,所得序列存入新建数组B中;103、统计数组B中出现的不同的元素,将这些不同的元素按出现的顺序存入新建 数组C中;104、将数组C中的元素按升序排序,排序后的序列存入新建数组D中;105、将数组D中第η个元素值使用数字η代替,所得序列存入新建数组E中;106、将数组D中元素和数组E中元素按照一一对应的关系,对数组B中所有的元 素进行替换,所得序列存入新建数组F中;107、将数组F中所有元素做上述第1)步骤的反变换,其中数组F中的第一位代码4为变量a中所存的代码,反变换后的二进制代码序列存入新建数组G中;108、将数组D中元素进行“后项减去相邻前项”处理,结果存入新建数组H中,寻 找数组H中第一个大于或等于2的元素位置,设此元素在数组H中的位置为n,将数组D中 前η个元素全部删除,剩余的元素顺序存入新建数组I中;109、保存数组I和G为二进制文件,此二进制文件即为源文件无损压缩后的文件。201、读取数组G中的二进制序列,将数组G中第一位二进制代码存入变量g中;202、用数组A中“持续0直至下一位是1”的长度替换“持续0直至下一位是1”中 所出现的所有的“0”;用数组A中“持续1直至下一位是0”的长度替换“持续1直至下一位 是0”中所出现的所有的“ 1 ”,所得序列存入新建数组F中;203、统计数组F中出现的不同的元素及,将这些不同的元素按出现的顺序存入新 建数组E中;204、将数组E中的元素按升序排序,排序后的序列存入新建数组D中;205、读取数组I,设数组I中共有i个元素,将数组D中后i个元素使用数组I中 的元素替换,替换后的序列存入新建数组C中;206、将数组D中元素和数组C中元素按照一一对应的关系,对数组F中所有的元 素进行替换,所得序列存入新建数组B中;207、将数组B中所有元素做上述第1)步骤的反变换,其中数组B中的第一位代码 为变量g中所存的代码,反变换后的二进制代码序列存入新建数组A中,将数组A保存为文 件,该文件即为源文件。具体实施例方式图1为本专利技术所述压缩方法对源文件进行无损压缩的流程图。如图1所示,压缩 的步骤为对将要进行压缩的文件以二进制方式读出,所得二进制序列存入新建数组A中, 将数组A中的第一位二进制代码存入变量a中(步骤101);用数组A中“持续0直至下一 位是1”的长度替换“持续0直至下一位是1”中所出现的所有的“0” ;用数组A中“持续1 直至下一位是0”的长度替换“持续1直至下一位是0”中所出现的所有的“1”,所得序列存 入新建数组B中(步骤102);然后统计数组B中出现的不同的元素,将这些不同的元素按出 现的顺序存入新建数组C中(步骤103);将数组C中的元素按升序排序,排序后的序列存 入新建数组D中(步骤104);再将数组D中第η个元素值使用数字η代本文档来自技高网...

【技术保护点】

【技术特征摘要】
一种通用信息的无损压缩方法,其步骤如下1)以二进制方式读取源文件,所得二进制序列存入新建数组A中,将数组A中的第一位二进制代码存入变量a中;2)用数组A中“持续0直至下一位是1”的长度替换“持续0直至下一位是1”中所出现的所有的“0”;用数组A中“持续1直至下一位是0”的长度替换“持续1直至下一位是0”中所出现的所有的“1”,所得序列存入新建数组B中;3)统计数组B中出现的不同的元素,将这些不同的元素按出现的顺序存入新建数组C中;4)将数组C中的元素按升序排序,排序后的序列存入新建数组D中;5)将数组D中第n个元素值使用数字n代替,所得序列存入新建数组E中;6)将数组D中元素和数组E中元素按照一一对应的关系,对数组B中所有的元素进行替换,所得序列存入新建数组F中;7)将数组F中所有元素做上述第1)步骤的反变换,其中数组F中的第一位代码为变量a中所存的代码,反变换后的二进制代码序列存入新建数组G中;8)将数组D中元素进行“后项减去相邻前项”处理,结果存入新建数组H中,寻找数组H中第一个大于或等于2的元素位置,设此元素在数组H中的位置为n,将数组D中前n个元素全部删除,剩余的元素顺序存入新建数组I中;9)保存数组I和G为二进制文件,此二进制文件即为源文件无损压缩后的文件。2.根据权利要求1所述的通用信息的无损压缩方法,其特征在于步骤5)中,...

【专利技术属性】
技术研发人员:王文延
申请(专利权)人:广西师范大学
类型:发明
国别省市:45

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1