CN107592116A - 一种数据压缩方法、装置及存储介质 - Google Patents
一种数据压缩方法、装置及存储介质 Download PDFInfo
- Publication number
- CN107592116A CN107592116A CN201710860509.7A CN201710860509A CN107592116A CN 107592116 A CN107592116 A CN 107592116A CN 201710860509 A CN201710860509 A CN 201710860509A CN 107592116 A CN107592116 A CN 107592116A
- Authority
- CN
- China
- Prior art keywords
- character
- character string
- data
- type
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明公开了一种数据压缩方法、装置及存储介质,所述方法包括:依次读取待压缩数据中不同类型的字符串;当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。通过实施本发明的技术方案,能够确保压缩后的数据可逆。
Description
技术领域
本发明涉及数据压缩技术,尤其涉及一种数据压缩方法、装置及存储介质。
背景技术
随着数据的量级不断大,对数据的存储、传输以及快速有效的获取带来了很大的障碍,因此,数据压缩技术应运而生。数据压缩技术能保证在不丢失信息的前提下,缩减数据量以减少存储空间,同时提高了数据传输、存储和处理的效率。
对于数据的压缩,传统的压缩方法有很多,这些压缩方法均可对数据进行大比例的压缩,例如,采用叠字压缩法与数字进制转换法相结合的压缩方法,可以实现对数据中的叠字和数字进行压缩,如将十进制的字符串AAAAA10压缩为十六进制的字符串5AA,从而实现大比例的压缩。采样上述的压缩方法压缩数据后,解压时可能出现不可逆的问题。
发明内容
针对上述的技术问题,本发明实施例期望提供一种数据压缩方法、装置及存储介质,能够确保压缩后的数据可逆。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供了数据压缩方法,包括:
依次读取待压缩数据中不同类型的字符串;
当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
上述方案中,所述预设字符集中的字符为可见类型的字符。
上述方案中,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所读取的字符串的类型为数字类、且首位为非零时,将所述字符串进行预设进制的转换,获得转换结果,所述转换结果中的字符归属于第一子预设字符集;
其中,所述第一子预设字符集为所述预设字符集的子集,所述预设进制的进制数大于所述字符串的进制数。
上述方案中,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所述字符串的类型为数字类、且全为零时,将所述字符串中的数字零,转换为归属于第二子预设字符集的第一目标字符;
其中,所述第二子预设字符集中的字符为所述预设字符集的子集,与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同。
上述方案中,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所述字符串的类型为数字类、且首位为零时,
将第一部分转换为归属于第二子预设字符集的目标字符串,所述第一部分为所述字符串中首位数字为零的部分;
将第二部分进行预设进制的转换,所述第二部分为所述字符串中除所述首位数字为零之外的部分。
上述方案中,所述当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,包括:
将所述字符串中归属于所述第一子预设字符集的字符,编码为由可见类型的字符组成的第二目标字符,所述第二目标字符与所述待压缩数据中的字符不同,且不属于所述预设字符集。
上述方案中,所述依次读取待压缩数据中不同类型的字符串,包括:
查找待压缩数据中相应类型的字符;
将连续出现的同类型的字符确定为一个字符串。
第二方面,本发明实施例还提供了一种数据压缩装置,包括:
读取模块,用于依次读取待压缩数据中不同类型的字符串;
第一编码模块,用于当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
第二编码模块,用于当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
组合模块,用于对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
第三方面,本发明实施例还提供了一种数据压缩装置,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器,用于运行所述计算机程序时,实现上述的数据压缩方法。
第四方面,本发明实施例还提供了存储介质,存储有计算机程序,所述计算机程序被处理器执行时,实现上述的数据压缩方法。
通过本发明实施例提供的技术方案,具有以下有益效果:
1)根据字符串字符的类型,从待压缩数据中读取相应类型的字符串,对不同类型的字符串分类进行编码,有效地提高了编码的效率;
2)编码过程中,当字符串的类型为非数字类时,编码为与待压缩数据中的字符不同,且不属于预设字符集,有效的解决了解压缩不可逆的问题。
附图说明
图1为本发明实施例提供的一种数据压缩装置的结构示意图;
图2为本发明实施例提供的一种数据压缩方法的实现流程示意图;
图3为本发明实施例提供的另一种数据压缩方法的实现流程示意图;
图4为本发明实施例提供的另一种数据压缩装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作在本发明可选实施例中详细描述,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
对本发明进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)待压缩数据,指的是需要进行压缩的数据,该数据中包含各种类型的字符,如字母、数字、字和符号,其中,字指的是各地区所使用的文字,根据实际情况,可将该文字可以转换为字母,用字母的形式表示文字;
2)字符串,指的是由字符组成的字符串,在同一个字符串内,其字符类型相同;
3)编码方式,指通过特定的压缩技术,将某个文件(或数据、或字符串、或字符)转换成另一种形式的文件(或数据、或字符串、或字符)的方式;
4)字符集,指的是采样某种编码方式进行编码时,所需要用到的字符的集,例如,将十进制转换为32进制,若32进制除了用到1-9,还用到A-W,那么,该编码方式对应的字符集为{1、2、……、9、A、B、……、V和W}。
5)可见类型的字符,指的是信息交换标准代码(ASCII,American StandardCodefor Information Interchange)中定义的可见字符(亦称可显示字符),在标准ASCII码中,总共有128个字符;其中,0~31和127为控制字符或通信专用字符,为不可见字符;32~126为可见字符。
参见图1,图1为本发明实施例提供的一种数据压缩装置的结构示意图,实际应用中可以实施为如台式机电脑、笔记本电脑和智能手机等各种电子设备,图1所示的监测装置100包括:至少一个处理器110、存储器120、至少一个网络接口130和用户接口140。监测装置100中的各个组件通过总线系统150耦合在一起。可理解,总线系统150用于实现这些组件之间的连接通信总线系统150除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图1中将各种总线都标为总线系统150。
其中,用户接口140根据需要可以实施为显示器、键盘触感板或者触摸屏等。
可以理解,存储器120可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者,本发明实施例描述的存储器120旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储器120用于存储各种类型的数据以支持监测装置100的操作。这些数据的示例包括:用于在监测装置100上操作的任何计算机程序,如操作系统121和应用程序122。
其中,操作系统121包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序122可以包含各种应用程序,实现本发明实施例提供的数据压缩方法的程序可以包含在应用程序122中作为一个功能模块,当然也可以提供为专门用于数据压缩方法的应用程序。
本发明实施例提供的数据压缩方法可以应用于处理器110中,或者由处理器110实现,基于纯硬件的方式实施,或者基于软件和硬件结合的方式实施。
就纯硬件的实施方式来说,处理器110可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,本发明实施例提供的数据压缩方法的各步骤可以通过处理器110中的硬件的集成逻辑电路完成,例如在示例性实施例中,监测装置100可以内建有用于实现本发明实施例提供的数据压缩方法的硬件译码处理器实施,例如,专用集成电路(ASIC,Application Specific Integrated Circuit)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)等实现。
就软硬件结合的实施方式来说,上述的处理器110可以是通用处理器及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器120,其中,存储介质存储能够在处理器110上运行的计算机程序,处理器110读取存并运行储器120中的计算机程序时,执行:
依次读取待压缩数据中不同类型的字符串;
当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
这里,所述预设字符集中的字符为可见类型的字符。
这里,处理器110读取存并运行所述计算机程序时,执行:
当所读取的字符串的类型为数字类、且首位为非零时,将所述字符串进行预设进制的转换,获得转换结果,所述转换结果中的字符归属于第一子预设字符集;
其中,所述第一子预设字符集为所述预设字符集的子集,所述预设进制的进制数大于所述字符串的进制数。
这里,处理器110读取存并运行所述计算机程序时,执行:
当所述字符串的类型为数字类、且全为零时,将所述字符串中的数字零,转换为归属于第二子预设字符集的第一目标字符;
其中,所述第二子预设字符集中的字符为所述预设字符集的子集,与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同。
这里,处理器110读取存并运行所述计算机程序时,执行:
当所述字符串的类型为数字类、且首位为零时,
将第一部分转换为归属于第二子预设字符集的目标字符串,所述第一部分为所述字符串中首位数字为零的部分;
将第二部分进行预设进制的转换,所述第二部分为所述字符串中除所述首位数字为零之外的部分。
这里,处理器110读取存并运行所述计算机程序时,执行:
将所述字符串中归属于所述第一子预设字符集的字符,编码为由可见类型的字符组成的第二目标字符,所述第二目标字符与所述待压缩数据中的字符不同,且不属于所述预设字符集。
这里,处理器110读取存并运行所述计算机程序时,执行:
查找待压缩数据中相应类型的字符;
将连续出现的同类型的字符确定为一个字符串。
参见图2,图2为本发明实施例提供的一种数据压缩方法的实现流程示意图,所述数据压缩方法可以包括以下步骤:
步骤210:数据压缩装置获得待压缩数据。
这里,数据压缩装置可以是台式机电脑、笔记本电脑和智能手机等各种电子设备。
在实际应用过程中,可以通过外界输入的方式获得待压缩数据,例如,当需要发短信时,用户通过数据压缩装置中的物理键盘、虚拟键盘或语音等输入相应的数据,如文字、字母、数字和标号等,因此,数据压缩装置获得相应的数据。需要说明的是,若输入了文字,那么,可以将文字进行相应的转换,转换成相应的字母,如输入了文字“咪咕文化”,那么将该文字转换为“miguwenhua”;若输入了中文标号,相应的转换为英文标号,如“。”转换为“.”。
步骤220:数据压缩装置依次读取待压缩数据中不同类型的字符串。
在可选的实施例中,按照待压缩数据中字符排列的先后顺序,依次查找该待压缩数据中相应类型的字符,将连续出现的同类型的字符确定为一个字符串,从而获得待压缩数据中不同类型的字符串。
例如,假设待压缩数据为“325432653kdJa5436fkDs”,1)首先从排列靠前开始检索,检索到的字符为数字“3”,然后继续往后进行数字检索,直至检索到字母为止“k”为止,因此,将连续出现的同类型的字符确定为一个字符串,即将“325432653”确定为一个字符串;2)对后续的数据进行检索,检索到字母“k”,然后,继续进行字母检索,直至检索到出现数字“5”为止,因此,将连续出现的同类型的字符确定为一个字符串,即将“kdJa”作为一个字符串;3)。采用上述的方法,获得字符串“5436”和“fkDs”。
步骤230:当所读取的字符串的类型为数字类时,数据压缩装置对所获取的字符串进行编码,获得第一编码结果。
这里,所述第一编码结果中的字符归属于预设字符集,且预设字符集中的字符为可见类型的字符。
在实际应用过程中,对于获得的字符串,有可能是数字类型的字符串,也可能是非数字类型的字符串。其中,而当字符串的类型为数字类时,也有可能有以下三种情况:
情况1:字符串的类型为数字类、且首位数字为非零
在可选的实施例中,当字符串中为数字类时,该数字字符串的首位可能为非零,因此,当所读取的字符串的类型为数字类、且首位为非零时,将所述字符串进行预设进制的转换,获得转换结果,所述转换结果中的字符归属于第一子预设字符集,其中,所述第一子预设字符集为所述预设字符集的子集,所述预设进制的进制数大于所述字符串的进制数。
例如,假设待压缩数据为“325432653kdJa5436fkDs”,当读取到数字为“325432653”字符串的后,其中,该数字字符串的进制为10进制,那么,将字符串“325432653”进行高进制的转换,根据实际应用,可以转换成16进制,或者转换为32进制。举例来说,①若转换为32进制,32进制所用到的字符为第一子预设字符集{1,2,……,9,A,B,……,V,W}中的字符,那么,字符串“325432653”转换后为“9PBDAD”;若转换为16进制,16进制所用到的字符为第一子预设字符集{1,2,……,9,A,B,C,D,E,F}中的字符,那么,字符串“325432653”转换后为“1365B54D”;②或者,若转换为32进制,32进制所用到的字符为第一子预设字符集{1,2,……,9,a,b,……,v,w}中的字符,那么,转换后的字符串为“9pbdad”;若转换为16进制,16进制所用到的字符为第一子预设字符集{1,2,……,9,a,d,c,d,e,f}中的字符,那么,字符串“325432653”转换后为“1365b54d”。通过将数字进行进制转换后,实现了对数据的压缩。需要说明的是,预设进制对应的字符集中,所采用的字符可以根据实际情况进行设定,本发明实施例中不做具体限制。
情况2:字符串的类型为数字类、且数字全为零
在可选的实施例中,当字符串的类型为数字类时,还可能出现数字字符串全为零的情况,因此,当所述字符串的类型为数字类、且全为零时,将所述字符串中的数字零,转换为归属于第二子预设字符集的第一目标字符;其中,所述第二子预设字符集中的字符为所述预设字符集的子集,与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同。
例如,假设待压缩数据为“0000kdJa00fkDs”,第二子预设字符集为{“[”,“]”,“{”,“}”},其中,0的个数与转换的字符之间的对应关系如下表1所示,因此,当读取到数字为“0000”和“00”的字符串后,那么,对应的获得“}”和“]”。因此,转换后实现了对数据的压缩。这里,为了便于与集合的大括号进行区分,对预设字符集中的字符添加了双引号。
需要说明的是,上述集中的字符仅仅只是列举,包含但不限于上述字符;对应的,上述字符串中的连零个数仅仅只是列举,而非穷举,包含但不限于上述个数,例如,可以是连续出现5、6、7、…、N个等,N为正整数。
表1
这里,继续对本发明实施例中的“所述第二子预设字符集中的字符与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同”进行进一步说明,由于两个预设字符集中的字符不同,因此,当数字字符串为全零时,可以确保转换所得的字符与上述的“情况1)”编码所获得的字符不同,从而避免了解压后不可逆的问题。
情况3:字符串的类型为数字类、且首位数字为零
在可选的实施例中,当字符串的类型为数字类时,还可能出现数字字符串的首位为零的情况,因此,当所述字符串的类型为数字类、且首位为零时,
将第一部分转换为归属于第二子预设字符集的目标字符串,所述第一部分为所述字符串中首位数字为零的部分;将第二部分进行预设进制的转换,所述第二部分为所述字符串中除所述首位数字为零之外的部分。
例如,假设待压缩数据为“0000325432653kdJa5436fkDs”,当读取到数字为“0000325432653”字符串的后,由于首位出现为0的情况,需要对该字符串进行划分,划分为“0000”和“325432653”两个部分。①对于字符串为“0000”的部分,采用上述2)的方法,对“0000”进行转换,这里不再进行赘述;②①对于字符串为“325432653”的部分,采用上述1)的方法进行进制转换,这里也不再进行赘述。需要说明的是,上述的首位,并非仅仅指的是第一位数,而是指的是前面的几位数,如上述的“0000”。
步骤240:当所读取的字符串的类型为非数字类时,数据压缩装置将所读取的字符串进行编码,获得第二编码结果。
在实际应用过程中,字符串的类型除了包含数字类型的字符串,还可能包含非数字类型的情况,因此,当所述字符串的类型为非数字类时,将所述字符串的字符编码为由可见类型的字符组成的目标字符,对该目标字符进行组合,得到第二编码结果;其中,所述目标字符不属于预设字符集,也即不属于第一子预设字符集和第二子预设字符集,且所述目标字符与所述待压缩数据中的字符不同。
例如,假设待压缩数据为“325432653kdJa5436fkDs”,且第一子预设字符集为{1,2,……,9,A,B,……,V,W},第二子预设字符集为{“[”,“]”,“{”,“}”}时,那么,对于字符串“325432653”和“5436”,转换后分别获得“9PBDAD”和“59W”,若不对字符串“kdJa”和“fkDs”进行转换,那么,获得“9PBDADkdJa59WfkDs”,在进行解压缩时,可能会造成不可逆的情况,例如字母D在解压缩时,无法确认该字母D对应的是压缩之前的D,还是对应的是压缩之前的数字13,因此造成解压出错的问题,即不可逆的情况。因此,为了避免造成不可逆的情况,本发明实施例中,需要对字符串“kdJa”和“fkDs”进行编码,若字母转换的对应关系如下表2所示,那么,字符串“kdJa”和“fkDs”经过转换后获得“~@#`”和“^~&*”。因此,压缩后的数据为“9PBDAD~@#`59W^~&*”,避免了解压不可逆的问题。
表2
转换前 | k | d | J | a | f | D | s |
转换后 | ~ | @ | # | ` | ^ | & | * |
在可选的实施例中,当所读取的字符串的类型为非数字类时,数据压缩装置可以只对有冲突的字符进行编码,即将所述字符串中归属于所述第一子预设字符集的字符,编码为由可见类型的字符组成的第二目标字符,所述第二目标字符与所述待压缩数据中的字符不同,且不属于所述预设字符集。
例如,第一子预设字符集为{1,2,……,9,A,B,……,V,W},为了避免不可逆的问题,这里,只需对字符串“kdJa”和“fkDs”中的大写字母进行转换即可,若字母转换的对应关系如下表3所示,那么,“kdJa”和“fkDs”转换后获得“kd#a”和“fk&s”。因此,压缩后的数据为“9PBDADkd#a59Wfk&s”,避免了解压缩不可逆的问题,也提高了编码的效率。
表3
转换前 | J | D |
转换后 | # | & |
这里,继续对预设字符集进行说明,预设字符集包含第一子预设字符集和第二子预设字符集;若当第一子预设字符集为{1,2,……,9,A,B,……,V,W},第二子预设字符集为{“[”,“]”,“{”,“}”}时,那么,该预设字符集可以是{1,2,……,9,A,B,……,V,W,“[”,“]”,“{”,“}”}。
在可选的实施例中,上述预设字符集中的字符、待压缩字符串中的字符均为ASCII中的字符,且均为可见类型的字符。以保证转换后所得的字符均为可见字符,便于对压缩后的数据进行加密处理。
步骤250:数据压缩装置对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
在本发明实施例中,假设待压缩数据为“325432653kdJa5436fkDs”,字符串“325432653”和“5436”转换后分别获得“9PBDAD”和“59W”,kdJa”和“fkDs”转换后分别获得“kd#a”和“fk&s”,将上述的编码结果进行组合,获得最终的压缩结果“9PBDADkd#a59Wfk&s”。
对于常见的字符串压缩方法,如Snappy,能对字符串进行很大比例的压缩,但输出的是不可见字符。然而一般发送短信之前我们会考虑将短信加密,基本上的加密算法都不支持加密不可见字符,对不可见字符的操作与转换方式比较少且大多数的加密算法都不支持不可见字符的加密。对于将叠字压缩法与数字进制转换法相结合的压缩方法,如原始字符串为“AAAAA10”,如果采用叠字压缩法及16进制转换法则会被压缩为“5AA”。但是面对“5AA”这样的压缩后的字符串,无法进行解压缩,对于后两个“A”,无法识别它们代表是的字母A还是16进制的10,这种压缩方法不可逆。因此,本发明实施例提出了一种解决方法,能保证输出可见字符,且解压缩可逆。如图3所示,图3为本发明实施例提供的另一种数据压缩方法的实现流程示意图,所述数据压缩方法可以包括:
(一)对于给定字符串,从第一个字符开始逐个检索。
ASCII表中共有128个字符,其中可见字符有95个,所以,对于给定字符串中的字符的转换仅能限定在95个可见字符中,同时给定在字符串也由95个可见字符组成。
(二)若检索到的字符为数字,则继续进行字符检索,直到检索到非数字字符或者检索到已有18个连续的数字字符,则将检索到的数字转换为更高进制的字符。
例如,假设给定字符串为:“325432653kdJa5436fkDs”,最开始检索到数字3后,继续往后检索,直到检索到3后面的k时,则将十进制的字符“325432653”转换为32进制的字符“9PBDAD”,这里,32进制的转换过程中,用到预设字符集{1、2、……、9、A、B、……、V和W}中的字符。
(三)若检索到的字符为(一)的编码结果中使用过的字母,则将其转换为与预设字符集不同的字符,且与给定字符串中所包含的字符不同。
这里,以将10进制数转换为32进制数为例,由于在(一)中,数字转换为32进制时使用了大写字母A-W,为了实现压缩可逆,要把给定字符串中的大写字母转换为其它字符,避免无法区分编码结果中的大写字母是“对数字转换获得的字母”,还是“给定字符串中所包含的字母”的问题。
此外,转换后的字符也不能是给定字符串中已有的字符,以避免解压缩时出现不可逆的问题。例如,若给定字符串中包含字母a,则不能将字符串中的字母A转换为a,否则在解压缩时,无法确定是否需要将a转换为A,还是不转换。
例如,(一)中的结果使用了大写字母PBDAD,那么可以将给定字符串中的大写字母A~Z转换为预设字符集之外的字符,例如:
若给定字符串中出现“A~O”,那么转换为:“!~/”;
若给定字符串中出现“P~V”,那么转换为:“:~@”;
若给定字符串中出现“W~Z”,那么转换为:“[~^”,可参考ASCII表。
(四)若检索到的字符为“0”,则继续进行字符检索,直到检索到不为“0”的字符,或者检索到n个字符“0”,进行如下处理:
这里,n为(一)和(二)中未使用过的可见字符个数,例如,(一)中至少使用了{1、2、……、9、A、B、……、V和W},总共32个字符;(二)中至少使用了{“”、“!”、……、“/”、“:”、……、“@”、“[”、“\”、“]”、“^”}总共26个字符,“”表示空字符。由于给定字符串中还会涉及上述两个集之外的其它可见字符,因此,n的理论最大值可以取95-32-26=37。这里,未使用过的可见字符可数越多,则n的取值越大,即可以将多个连续的0转换为单个字符,实现对连续的0的压缩。
例如,未使用的可见字符有4个,为字符(‘~’,‘{’,‘_’,‘}’),那么,转换的关系如下:
“0”可转化为:“~”;
“00”可转化为:“{”;
“000”可转化为:“_”;
“0000”可转化为:“}”。
(五)若检索到的字符为上述(2)(3)(4)以外的其它字符,则不做转换。即对不存在冲突的其它字符不做转换。
参见图4,图4为本发明实施例提供的一种数据压缩装置的结构示意图,所述数据压缩装置包括:
读取模块401,用于依次读取待压缩数据中不同类型的字符串;
第一编码模块403,当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
第二编码模块403,用于当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
组合模块404,用于对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
这里,所述预设字符集中的字符为可见类型的字符。
这里,第一编码模块402,具体用于:
当所读取的字符串的类型为数字类、且首位为非零时,将所述字符串进行预设进制的转换,获得归属于第一子预设字符集的目标字符串;
其中,所述第一子预设字符集为所述预设字符集的子集,所述预设进制的进制数大于所述字符串的进制数。
这里,第一编码模块402,具体用于:
当所述字符串的类型为数字类、且全为零时,将所述字符串中的数字零,转换为归属于第二子预设字符集的目标字符;
其中,所述第二子预设字符集中的字符为所述预设字符集的子集,与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同。
这里,第一编码模块402,具体用于:
当所述字符串的类型为数字类、且首位为零时,
将第一部分转换为归属于第二子预设字符集的目标字符串,所述第一部分为所述字符串中首位数字为零的部分;
将第二部分进行预设进制的转换,所述第二部分为所述字符串中除所述首位数字为零之外的部分。
这里,第二编码模块403,具体用于:
将所述字符串中归属于所述第一子预设字符集的字符,编码为由可见类型的字符组成的目标字符。
这里,获取模块401,具体用于:
查找待压缩数据中相应类型的字符;
将连续出现的同类型的字符确定为一个字符串。
本发明实施例还提供一种存储介质,存储有计算机程序,所述计算机程序被处理器执行时用于实现本发明实施例提供的数据压缩方法,例如,如图2、图3任一附图所示的数据压缩方法;存储介质包括易挥发性随机存取存储器(RAM)、只读存储器(ROM)、电可擦可编程只读存储器(EEPROM)、闪存或其他存储器技术、只读光盘(CD-ROM)、数字通用盘(DVD)或其它被访问的介质。
通过实施本发明实施例提供的技术方案,具有以下有益效果:
1)根据字符串字符的类型,从待压缩数据中读取相应类型的字符串,对不同类型的字符串分类进行编码,有效地提高了编码的效率;
2)编码过程中,当字符串的类型为非数字类时,编码为与待压缩数据中的字符不同,且不属于预设字符集,有效的解决了解压缩不可逆的问题;
3)可以将待压缩的字符串压缩为可见字符串,以便对压缩后的字符串进行加密处理,避免了传统压缩方式中无法进行加密的问题。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种数据压缩方法,其特征在于,包括:
依次读取待压缩数据中不同类型的字符串;
当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
2.根据权利要求1所述的方法,其特征在于,所述预设字符集中的字符为可见类型的字符。
3.根据权利要求1或2所述的方法,其特征在于,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所读取的字符串的类型为数字类、且首位为非零时,将所述字符串进行预设进制的转换,获得转换结果,所述转换结果中的字符归属于第一子预设字符集;
其中,所述第一子预设字符集为所述预设字符集的子集,所述预设进制的进制数大于所述字符串的进制数。
4.根据权利要求1或2所述的方法,其特征在于,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所述字符串的类型为数字类、且全为零时,将所述字符串中的数字零,转换为归属于第二子预设字符集的第一目标字符;
其中,所述第二子预设字符集中的字符为所述预设字符集的子集,与第一子预设字符集中的字符不同、且与所述待压缩数据中的字符不同。
5.根据权利要求1或2所述的方法,其特征在于,所述当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,包括:
当所述字符串的类型为数字类、且首位为零时,
将第一部分转换为归属于第二子预设字符集的目标字符串,所述第一部分为所述字符串中首位数字为零的部分;
将第二部分进行预设进制的转换,所述第二部分为所述字符串中除所述首位数字为零之外的部分。
6.根据权利要求3所述的方法,其特征在于,所述当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,包括:
将所述字符串中归属于所述第一子预设字符集的字符,编码为由可见类型的字符组成的第二目标字符,所述第二目标字符与所述待压缩数据中的字符不同,且不属于所述预设字符集。
7.根据权利要求1所述的方法,其特征在于,所述依次读取待压缩数据中不同类型的字符串,包括:
查找待压缩数据中相应类型的字符;
将连续出现的同类型的字符确定为一个字符串。
8.一种数据压缩装置,其特征在于,包括:
读取模块,用于依次读取待压缩数据中不同类型的字符串;
第一编码模块,用于当所读取的字符串的类型为数字类时,对所获取的字符串进行编码,获得第一编码结果;其中,所述第一编码结果中的字符归属于预设字符集;
第二编码模块,用于当所读取的字符串的类型为非数字类时,将所读取的字符串进行编码,获得第二编码结果;其中,所述第二编码结果中的字符与所述待压缩数据中的字符不同,且不属于所述预设字符集;
组合模块,用于对所述不同类型的字符串的编码结果进行组合,获得所述待压缩数据的压缩结果。
9.一种数据压缩装置,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,
所述处理器,用于在运行所述计算机程序时,实现权利要求1至7任一项所述的数据压缩方法。
10.一种存储介质,其特征在于,存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至7任一项所述的数据压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710860509.7A CN107592116B (zh) | 2017-09-21 | 2017-09-21 | 一种数据压缩方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710860509.7A CN107592116B (zh) | 2017-09-21 | 2017-09-21 | 一种数据压缩方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107592116A true CN107592116A (zh) | 2018-01-16 |
CN107592116B CN107592116B (zh) | 2019-06-11 |
Family
ID=61047771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710860509.7A Active CN107592116B (zh) | 2017-09-21 | 2017-09-21 | 一种数据压缩方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107592116B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110309376A (zh) * | 2019-07-10 | 2019-10-08 | 深圳市友华软件科技有限公司 | 嵌入式平台的配置条目管理方法 |
CN111324587A (zh) * | 2018-12-14 | 2020-06-23 | 北京京东尚科信息技术有限公司 | Obj文件的数据的压缩方法、解析方法以及系统 |
CN111384959A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码模块及存储介质 |
CN111384969A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码装置及存储介质 |
CN112364642A (zh) * | 2019-07-23 | 2021-02-12 | 马上消费金融股份有限公司 | 一种文本处理方法及装置 |
WO2021051532A1 (zh) * | 2019-09-16 | 2021-03-25 | 平安科技(深圳)有限公司 | 数据压缩方法、装置、设备及计算机可读存储介质 |
CN112888024A (zh) * | 2019-11-29 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子设备 |
CN114500670A (zh) * | 2022-02-28 | 2022-05-13 | 北京京东振世信息技术有限公司 | 一种编码压缩方法、解码方法及装置 |
CN114665887A (zh) * | 2022-05-24 | 2022-06-24 | 成都索贝视频云计算有限公司 | 一种基于整体压缩的json字符串数据压缩方法 |
CN116614139A (zh) * | 2023-07-20 | 2023-08-18 | 酒仙网络科技股份有限公司 | 一种售酒小程序内用户交易信息压缩存储方法 |
WO2023231313A1 (zh) * | 2022-06-01 | 2023-12-07 | 寒武纪(西安)集成电路有限公司 | 数据压缩方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937582A (zh) * | 2006-08-11 | 2007-03-28 | 白杰 | 待压缩数据的预处理方法以及压缩数据的传输方法 |
CN105933009A (zh) * | 2016-05-19 | 2016-09-07 | 浪潮(北京)电子信息产业有限公司 | 数据压缩方法及系统、解压缩方法及系统 |
-
2017
- 2017-09-21 CN CN201710860509.7A patent/CN107592116B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937582A (zh) * | 2006-08-11 | 2007-03-28 | 白杰 | 待压缩数据的预处理方法以及压缩数据的传输方法 |
CN105933009A (zh) * | 2016-05-19 | 2016-09-07 | 浪潮(北京)电子信息产业有限公司 | 数据压缩方法及系统、解压缩方法及系统 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324587A (zh) * | 2018-12-14 | 2020-06-23 | 北京京东尚科信息技术有限公司 | Obj文件的数据的压缩方法、解析方法以及系统 |
CN111384959B (zh) * | 2018-12-28 | 2024-03-19 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码模块及存储介质 |
CN111384959A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码模块及存储介质 |
CN111384969A (zh) * | 2018-12-28 | 2020-07-07 | 上海寒武纪信息科技有限公司 | 编码方法、处理器、编码装置及存储介质 |
CN110309376A (zh) * | 2019-07-10 | 2019-10-08 | 深圳市友华软件科技有限公司 | 嵌入式平台的配置条目管理方法 |
CN112364642A (zh) * | 2019-07-23 | 2021-02-12 | 马上消费金融股份有限公司 | 一种文本处理方法及装置 |
CN112364642B (zh) * | 2019-07-23 | 2024-04-02 | 马上消费金融股份有限公司 | 一种文本处理方法及装置 |
WO2021051532A1 (zh) * | 2019-09-16 | 2021-03-25 | 平安科技(深圳)有限公司 | 数据压缩方法、装置、设备及计算机可读存储介质 |
CN112888024A (zh) * | 2019-11-29 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子设备 |
CN112888024B (zh) * | 2019-11-29 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、存储介质及电子设备 |
CN114500670A (zh) * | 2022-02-28 | 2022-05-13 | 北京京东振世信息技术有限公司 | 一种编码压缩方法、解码方法及装置 |
CN114500670B (zh) * | 2022-02-28 | 2024-04-05 | 北京京东振世信息技术有限公司 | 一种编码压缩方法、解码方法及装置 |
CN114665887A (zh) * | 2022-05-24 | 2022-06-24 | 成都索贝视频云计算有限公司 | 一种基于整体压缩的json字符串数据压缩方法 |
WO2023231313A1 (zh) * | 2022-06-01 | 2023-12-07 | 寒武纪(西安)集成电路有限公司 | 数据压缩方法、装置、设备及存储介质 |
CN116614139B (zh) * | 2023-07-20 | 2023-09-19 | 酒仙网络科技股份有限公司 | 一种售酒小程序内用户交易信息压缩存储方法 |
CN116614139A (zh) * | 2023-07-20 | 2023-08-18 | 酒仙网络科技股份有限公司 | 一种售酒小程序内用户交易信息压缩存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107592116B (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107592116B (zh) | 一种数据压缩方法、装置及存储介质 | |
CN103995887B (zh) | 位图索引压缩方法和位图索引解压方法 | |
CN102707966B (zh) | 加速操作系统启动的方法及装置、预取信息生成方法及装置和终端 | |
US7924183B2 (en) | Method and system for reducing required storage during decompression of a compressed file | |
CN105450232A (zh) | 编码、解码方法以及编码装置和解码装置 | |
CN101256561A (zh) | 一种存储、访问数据库数据的方法、装置及系统 | |
CN110008744B (zh) | 数据脱敏方法和相关装置 | |
CN103942292A (zh) | 虚拟机镜像文件处理方法、装置及系统 | |
CN107565971A (zh) | 一种数据压缩方法及装置 | |
CN109471893B (zh) | 网络数据的查询方法、设备及计算机可读存储介质 | |
CN103593424A (zh) | 一种软硬件压缩可配置的大数据处理系统 | |
CN106407226B (zh) | 一种数据处理方法、备份服务器及存储系统 | |
CN101710322A (zh) | 一种信息关联的方法和系统 | |
US9563635B2 (en) | Automated recognition of patterns in a log file having unknown grammar | |
CN109901978A (zh) | 一种Hadoop日志无损压缩方法和系统 | |
CN101833608A (zh) | Pcb数据的处理方法及装置 | |
CN108932434A (zh) | 一种基于机器学习技术的数据加密方法及装置 | |
CN113010542A (zh) | 业务数据处理方法、装置、计算机设备及存储介质 | |
CN102063506B (zh) | 业务系统主机的译码处理方法、业务系统主机及系统 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
CN104571940A (zh) | 储存装置及其相关系统 | |
CN114676673A (zh) | 基于语音识别的文本数据的表格输入方法、装置以及设备 | |
CN107341113A (zh) | Cache的压缩方法和装置 | |
CN112597748A (zh) | 语料生成方法、装置、设备及计算机可读存储介质 | |
CN105005743A (zh) | 电话号码漂白和反向漂白方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |