CN114513209A - 数据压缩方法、装置、设备及存储介质 - Google Patents
数据压缩方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114513209A CN114513209A CN202210134663.7A CN202210134663A CN114513209A CN 114513209 A CN114513209 A CN 114513209A CN 202210134663 A CN202210134663 A CN 202210134663A CN 114513209 A CN114513209 A CN 114513209A
- Authority
- CN
- China
- Prior art keywords
- data
- compressed
- bit
- target
- byte
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明属于数据压缩技术领域,公开了一种数据压缩方法、装置、设备及存储介质。该方法包括:在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;根据所述数值区间确定对应的目标压缩策略;基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。通过上述方式,当待压缩数据的数据类型位预设数据类型时,确定待压缩数据的大小所处的数值区间,并基于其处于的数据区间确定对应的压缩策略,从而能够提升数据压缩时的压缩率。
Description
技术领域
本发明涉及数据压缩技术领域,尤其涉及一种数据压缩方法、装置、设备及存储介质。
背景技术
数据压缩技术广泛应用于互联网应用产品中,压缩方式根据应用场景的不同而不同。根据时效性要求可分为即时压缩和非即时压缩,根据压缩对象不同可分为数据压缩和文件压缩,根据对数据是否可还原分为有损压缩和无损压缩。在这个互联网产品竞争极其激烈的环境下,谁的产品能保证在网络通信中传输的数据更及时、更稳定,那无疑会占得优势。
目前通常使用GZIP压缩技术,GZIP压缩原理主要用到了LZ77算法和Huffman编码实现,是一种匹配利用冗余度和匹配串实现的无损压缩方法。GZIP压缩方法应用范围广泛,对压缩对象的压缩率理论在2:1到5:1范围内。而这样的压缩率尚无法满足需求,如何提升压缩率成为如今亟待解决的问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种数据压缩方法、装置、设备及存储介质,旨在解决现有技术如何提升数据压缩时的压缩率的技术问题。
为实现上述目的,本发明提供了一种数据压缩方法,所述方法包括以下步骤:
在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;
在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;
根据所述数值区间确定对应的目标压缩策略;
基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
可选地,所述基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据,包括:
根据所述目标压缩策略确定目标字节;
确定所述目标字节中的截止位和存储位;
根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据。
可选地,所述根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据,包括:
根据所述目标字节确定字节数量;
在所述字节数量为第一预设数量时,将所述待压缩数据中的第一预设位数据存储至所述存储位中;
将所述截止位设置为第一预设值;
根据所述存储位中的第一预设位数据以及所述截止位中的第一预设值生成目标压缩数据。
可选地,所述根据所述目标字节确定字节数量之后,还包括:
当所述字节数量为第二预设数量时,确定所述目标字节中的非截止位;
根据所述截止位以及所述非截止位确定所述存储位中的第一存储位以及第二存储位;
将所述待压缩数据中的第一预设位数据存储至所述第一存储位中,将所述待压缩数据中的第二预设位数据存储至所述第二存储位中;
将所述截止位设置为第一预设值;
将所述非截止位设置为第二预设值;
根据所述截止位中的第一预设值、所述非截止位中的第二预设值、所述第一存储位中的第一预设位数据以及所述第二存储位中的第二预设位数据生成目标压缩数据。
可选地,所述根据所述目标字节确定字节数量之后,还包括:
当所述字节数量大于第二预设数量时,确定所述目标字节中的各非截止位;
根据所述截止位以及各非截止位确定所述存储位中的各目标存储位;
将所述待压缩数据中的各预设位数据存储至各目标存储位中;
将所述截止位设置为第一预设值;
将所述各非截止位设置为第二预设值;
根据所述截止位中的第一预设值、所述各非截止位中的第二预设值以及所述各目标存储位中的各预设位数据生成目标压缩数据。
可选地,所述获取待压缩数据的数据类型之后,还包括:
在所述数据类型不为预设数据类型时,根据所述数据类型确定数据转换策略;
根据所述数据转换策略将所述待压缩数据的数据类型转换为预设数据类型;
确定转换后的所述待压缩数据的数值区间。
可选地,所述基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据之后,还包括:
读取所述目标压缩数据的当前字节;
当所述当前字节的最高位为所述第二预设值时,根据读取顺序确定下一字节;
当所述下一字节的最高位为所述第一预设值时,停止读取,并根据所述当前字节的存储位、所述下一字节的存储位以及所述读取顺序生成解压数据。
此外,为实现上述目的,本发明还提出一种数据压缩装置,所述数据压缩装置包括:
类型获取模块,用于当对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;
区间确定模块,用于当所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;
策略确定模块,用于根据所述数值区间确定对应的目标压缩策略;
数据压缩模块,用于基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
此外,为实现上述目的,本发明还提出一种数据压缩设备,所述数据压缩设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据压缩程序,所述数据压缩程序配置为实现如上文所述的数据压缩方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有数据压缩程序,所述数据压缩程序被处理器执行时实现如上文所述的数据压缩方法的步骤。
本发明在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;根据所述数值区间确定对应的目标压缩策略;基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。通过上述方式,当待压缩数据的数据类型位预设数据类型时,确定待压缩数据的大小所处的数值区间,并基于其处于的数据区间确定对应的压缩策略,从而能够提升数据压缩时的压缩率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的数据压缩设备的结构示意图;
图2为本发明数据压缩方法第一实施例的流程示意图;
图3为本发明数据压缩方法第二实施例的流程示意图;
图4为本发明数据压缩装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的数据压缩设备结构示意图。
如图1所示,该数据压缩设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对数据压缩设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及数据压缩程序。
在图1所示的数据压缩设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明数据压缩设备中的处理器1001、存储器1005可以设置在数据压缩设备中,所述数据压缩设备通过处理器1001调用存储器1005中存储的数据压缩程序,并执行本发明实施例提供的数据压缩方法。
本发明实施例提供了一种数据压缩方法,参照图2,图2为本发明一种数据压缩方法第一实施例的流程示意图。
本实施例中,所述数据压缩方法包括以下步骤:
步骤S10:在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型。
需要说明的是,本实施例的应用场景是:在对股票的成交额、成交量、银行账户的金额等数据进行压缩时,为了兼容极少数的大容量数据,需要使用无符号64位整型数据进行存储和传输。而在对无符号64位整型数据进行存储和传输时,需要对其进行压缩,从而达到存储空间占用更小、传输速率更高的目的。
在具体实现中,本实施例的执行主体可为终端设备,例如股票交易平台的服务器、银行的服务器等设备。也可以为计算机等具备运算功能的设备。
可以理解的是,股票的成交额、成交量、银行账户的金额等数据即为待压缩数据,不同的待压缩数据可能存在不同的数据类型,数据类型包括无符号64位整型、有符号64位整型、无符号32位整型等等。
进一步地,所述获取待压缩数据的数据类型之后,还包括:
在所述数据类型不为预设数据类型时,根据所述数据类型确定数据转换策略;根据所述数据转换策略将所述待压缩数据的数据类型转换为预设数据类型;确定转换后的所述待压缩数据的数值区间。
当待压缩数据不为无符号64位整型,则需要将待压缩数据进行转换,不同数据类型的待压缩数据对应不同的转换策略,当待压缩数据为有符号数时,首先需要将待压缩数据转换为无符号数,有符号数转换为无符号数时,需要检测有符号数的最高位是否为1,如果不为1(即为0),则无符号数就直接等于有符号数;如果有符号数的最高位为1,则将有符号数取补码,从而得到无符号数。在得到无符号数之后,若此无符号数为浮点数,则需要将浮点数转换为整型数,若为整型数则无需转换,在得到整型数后,检测整型数的位数是否为64位,若整型数的位数小于64,则需要将无符号数右移,从而补充至足够的位数。例如,无符号32位整型数据转换为无符号64位整型时,需将无符号32位整型数据右移32位,从而变成64位。
步骤S20:在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间。
需要说明的是,预设数据类型为无符号64位整型,当待压缩数据的数据类型为无符号64位整型时,确定待压缩数据所在的数值区间,数值区间例如[0x0000000000000000ULL,0x0000000000000080ULL),转换为十进制则是大于等于0、小于128。
步骤S30:根据所述数值区间确定对应的目标压缩策略。
可以理解的是,处于不同数值区间的待压缩数据其包含实际有效信息的位数不同,例如,在十进制中等于0、小于128的数据,转换为无符号64位整型后,包含实际有效信息的最大有效位数为低7位,而十进制中大于等于128、小于16384的数据转换为无符号64位整型后,包含实际有效信息的最大有效位数为低14位。因此,不同的数值区间的待压缩数据需要使用不同的目标压缩策略对待压缩数据进行压缩。
步骤S40:基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
进一步地,为了能够更好地对待压缩数据进行压缩,步骤S40包括:根据所述目标压缩策略确定目标字节;确定所述目标字节中的截止位和存储位;根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据。
需要说明的是,每一目标压缩策略对应一目标字节用于存储压缩后的目标压缩数据,目标字节中可以包括一个或多个连续的字节,每个字节(byte)中包括8比特位(bit),当目标字节为一个时,目标字节的最高位为截止位,其余为存储位,最高位是指一个字节中最左端的比特位,当目标字节为多个连续的字节时,目标字节中最大字节的最高位为截止位,其余为存储位,多个连续的字节中,最左端字节为最大字节,最右端字节为最小字节。
进一步地,所述根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据,包括:根据所述目标字节确定字节数量;在所述字节数量为第一预设数量时,将所述待压缩数据中的第一预设位数据存储至所述存储位中;将所述截止位设置为第一预设值;根据所述存储位中的第一预设位数据以及所述截止位中的第一预设值生成目标压缩数据。
可以理解的是,字节数量是指目标字节中的字节个数,第一预设数量是指数量1,当目标字节中仅有一个字节时,表示待压缩数据的大小处于第一区间,第一区间是指0x0000000000000000ULL至0x0000000000000080ULL,即待压缩数据大于等于0,小于128,此时待压缩数据中实际有效数据最大占用位为7位,且这7位为待压缩数据中的低7位,因此第一预设位数据为待压缩数据中64位的低7位,低7位是指64位中的最右端7位。将待压缩数据中的低7位存储至目标字节的存储位中。第一预设值是指1。目标字节中组成的组成的数据则为目标压缩数据。
进一步地,所述根据所述目标字节确定字节数量之后,还包括:当所述字节数量为第二预设数量时,确定所述目标字节中的非截止位;根据所述截止位以及所述非截止位确定所述存储位中的第一存储位以及第二存储位;将所述待压缩数据中的第一预设位数据存储至所述第一存储位中,将所述待压缩数据中的第二预设位数据存储至所述第二存储位中;将所述截止位设置为第一预设值;将所述非截止位设置为第二预设值;根据所述截止位中的第一预设值、所述非截止位中的第二预设值、所述第一存储位中的第一预设位数据以及所述第二存储位中的第二预设位数据生成目标压缩数据。
需要说明的是,第二预设数量是指2,当目标字节的字节数量为2时,则目标字节中还存在非截止位,非截止位是指非最大字节中其余每一字节中的最高位。当目标字节中包括两个字节时,待压缩数据的大小处于第二区间,第二区间为:0x0000000000000080ULL至0x0000000000004000ULL,即待压缩数据大于等于128,小于16384,此时待压缩数据的实际有效数据最大占用位为14比特位,且为待压缩数据中的低14位,第一存储位是指目标字节中最小字节的低7位,第二存储位是指目标字节中最大字节的低7位,第一预设位数据是指实际有效数据最大占用位中的低7位,第二预设位数据是指实际有效数据最大占用位中的高7位。第二预设值为0。
进一步地,所述根据所述目标字节确定字节数量之后,还包括:当所述字节数量大于第二预设数量时,确定所述目标字节中的各非截止位;根据所述截止位以及各非截止位确定所述存储位中的各目标存储位;将所述待压缩数据中的各预设位数据存储至各目标存储位中;将所述截止位设置为第一预设值;将所述各非截止位设置为第二预设值;根据所述截止位中的第一预设值、所述各非截止位中的第二预设值以及所述各目标存储位中的各预设位数据生成目标压缩数据。
在具体实现中,当目标字节的字节数量大于2时,目标字节中则存在多个非截止位,目标字节中每一字节的低7位则为目标存储位。目标字节中的最右字节为第一个字节,预设位数据是指待压缩数据的低7位,
当目标字节数量为3时,待压缩数据的大小处于第三区间,第三区间为:0x0000000000004000ULL至0x0000000000200000ULL,即待压缩数据大于等于16384,小于2097152,此时实际有效数据最大占用位为21比特位。因此,压缩的过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为4时,待压缩数据的大小处于第四区间,第四区间为:0x0000000000200000ULL至0x0000000010000000ULL,即待压缩数据大于等于2097152,小于268435456,此时实际有效数据最大占用位为28位,其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为5时,待压缩数据的大小处于第五区间,第五区间为:0x0000000010000000ULL至0x0000000800000000ULL,此时实际有效数据最大占用位为35位。其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为6时,待压缩数据的大小处于第六区间,第六区间为:0x0000000800000000ULL至0x0000040000000000ULL,此时实际有效数据最大占用位为42位。其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第六个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为7时,待压缩数据的大小处于第七区间,第七区间为:0x0000040000000000ULL至0x0002000000000000ULL,此时实际有效数据最大占用位为49位。其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第六个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第七个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为8时,待压缩数据的大小处于第八区间,第八区间为:0x0002000000000000ULL至0x0100000000000000ULL,此时实际有效数据最大占用位为56位。其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第六个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第七个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第八个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为9时,待压缩数据的大小处于第九区间,第九区间为:0x0100000000000000ULL至0x8000000000000000ULL,此时实际有效数据最大占用位为63位,其压缩过程为:将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第六个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第七个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第八个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第九个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
当目标字节数量为10时,待压缩数据的大小处于第十区间,第十区间为:大于0x8000000000000000ULL,此时实际有效数据最大占用位为70位。其压缩过程为:第一个字节存储待压缩数据的低7位,并将这个字节的最高位置为0;将待压缩数据右移7位,用第二个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第三个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第四个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第五个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第六个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第七个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第八个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第九个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为0;再将待压缩数据右移7位,用第十个字节存储移动后的待压缩数据的低7位,并将这个字节最高位置为1。
本实施例在对待压缩数据进行压缩时,获取待压缩数据的数据类型;在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;根据所述数值区间确定对应的目标压缩策略;基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。通过上述方式,当待压缩数据的数据类型位预设数据类型时,确定待压缩数据的大小所处的数值区间,并基于其处于的数据区间确定对应的压缩策略,从而能够提升数据压缩时的压缩率。
参考图3,图3为本发明一种数据压缩方法第二实施例的流程示意图。
基于上述第一实施例,本实施例数据压缩方法在所述步骤S40之后,还包括:
步骤S50:读取所述目标压缩数据的当前字节。
需要说明的是,在对目标压缩数据进行解压时,从目标压缩数据的第一个字节的最低位开始读取。
步骤S60:当所述当前字节的最高位为所述第二预设值时,根据读取顺序确定下一字节。
在具体实现中,读取时将当前字节的低7位数据按照由低向高的顺序写入“结果指针”指向的内存,“结果指针”指的是指向目标压缩数据解压后存储内存的指针。读取顺序是指由低向高,例如,由第一个字节向第二个字节。
可以理解的是,当前字节的最高位为0时,表示目标压缩数据没有解压完毕,需要继续解压。此时继续读取当前字节的下一个字节。
步骤S70:当所述下一字节的最高位为所述第一预设值时,停止读取,并根据所述当前字节的存储位、所述下一字节的存储位以及所述读取顺序生成解压数据。
需要说明的是,当下一字节的最高位为1时,则表示目标压缩数据已读取完毕,若下一字节的最高位仍为0时,则继续按照读取顺序继续读取字节,直至字节的最高位为1。
在具体实现中,目标压缩数据中每一字节的存储位中的数据由低到高写入“结果指针”指向的内存,从而得到完整的解压数据。
本实施例通过读取所述目标压缩数据的当前字节;当所述当前字节的最高位为所述第二预设值时,根据读取顺序确定下一字节;当所述下一字节的最高位为所述第一预设值时,停止读取,并根据所述当前字节的存储位、所述下一字节的存储位以及所述读取顺序生成解压数据。通过上述方式,能够将目标压缩数据进行解压,从而完成对数据的压缩以及解压过程。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有数据压缩程序,所述数据压缩程序被处理器执行时实现如上文所述的数据压缩方法的步骤。
由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
参照图4,图4为本发明数据压缩装置第一实施例的结构框图。
如图4所示,本发明实施例提出的数据压缩装置包括:
类型获取模块10,用于当对待压缩数据进行压缩时,获取所述待压缩数据的数据类型。
区间确定模块20,用于当所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间。
策略确定模块30,用于根据所述数值区间确定对应的目标压缩策略。
数据压缩模块40,用于基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
在一实施例中,所述数据压缩模块40,还用于根据所述目标压缩策略确定目标字节;确定所述目标字节中的截止位和存储位;根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据。
在一实施例中,所述数据压缩模块40,还用于根据所述目标字节确定字节数量;在所述字节数量为第一预设数量时,将所述待压缩数据中的第一预设位数据存储至所述存储位中;将所述截止位设置为第一预设值;根据所述存储位中的第一预设位数据以及所述截止位中的第一预设值生成目标压缩数据。
在一实施例中,所述数据压缩模块40,还用于当所述字节数量为第二预设数量时,确定所述目标字节中的非截止位;根据所述截止位以及所述非截止位确定所述存储位中的第一存储位以及第二存储位;将所述待压缩数据中的第一预设位数据存储至所述第一存储位中,将所述待压缩数据中的第二预设位数据存储至所述第二存储位中;将所述截止位设置为第一预设值;将所述非截止位设置为第二预设值;根据所述截止位中的第一预设值、所述非截止位中的第二预设值、所述第一存储位中的第一预设位数据以及所述第二存储位中的第二预设位数据生成目标压缩数据。
在一实施例中,所述数据压缩模块40,还用于当所述字节数量大于第二预设数量时,确定所述目标字节中的各非截止位;根据所述截止位以及各非截止位确定所述存储位中的各目标存储位;将所述待压缩数据中的各预设位数据存储至各目标存储位中;将所述截止位设置为第一预设值;将所述各非截止位设置为第二预设值;根据所述截止位中的第一预设值、所述各非截止位中的第二预设值以及所述各目标存储位中的各预设位数据生成目标压缩数据。
在一实施例中,所述类型获取模块10,还用于在所述数据类型不为预设数据类型时,根据所述数据类型确定数据转换策略;根据所述数据转换策略将所述待压缩数据的数据类型转换为预设数据类型;确定转换后的所述待压缩数据的数值区间。
在一实施例中,所述数据压缩模块40,还用于读取所述目标压缩数据的当前字节;当所述当前字节的最高位为所述第二预设值时,根据读取顺序确定下一字节;当所述下一字节的最高位为所述第一预设值时,停止读取,并根据所述当前字节的存储位、所述下一字节的存储位以及所述读取顺序生成解压数据。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
本实施例在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;根据所述数值区间确定对应的目标压缩策略;基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。通过上述方式,当待压缩数据的数据类型位预设数据类型时,确定待压缩数据的大小所处的数值区间,并基于其处于的数据区间确定对应的压缩策略,从而能够提升数据压缩时的压缩率。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据压缩方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据压缩方法,其特征在于,所述数据压缩方法包括:
在对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;
在所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;
根据所述数值区间确定对应的目标压缩策略;
基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
2.如权利要求1所述的方法,其特征在于,所述基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据,包括:
根据所述目标压缩策略确定目标字节;
确定所述目标字节中的截止位和存储位;
根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据。
3.如权利要求2所述的方法,其特征在于,所述根据所述截止位和所述存储位将所述待压缩数据压缩为目标压缩数据,包括:
根据所述目标字节确定字节数量;
在所述字节数量为第一预设数量时,将所述待压缩数据中的第一预设位数据存储至所述存储位中;
将所述截止位设置为第一预设值;
根据所述存储位中的第一预设位数据以及所述截止位中的第一预设值生成目标压缩数据。
4.如权利要求3所述的方法,其特征在于,所述根据所述目标字节确定字节数量之后,还包括:
当所述字节数量为第二预设数量时,确定所述目标字节中的非截止位;
根据所述截止位以及所述非截止位确定所述存储位中的第一存储位以及第二存储位;
将所述待压缩数据中的第一预设位数据存储至所述第一存储位中,将所述待压缩数据中的第二预设位数据存储至所述第二存储位中;
将所述截止位设置为第一预设值;
将所述非截止位设置为第二预设值;
根据所述截止位中的第一预设值、所述非截止位中的第二预设值、所述第一存储位中的第一预设位数据以及所述第二存储位中的第二预设位数据生成目标压缩数据。
5.如权利要求3所述的方法,其特征在于,所述根据所述目标字节确定字节数量之后,还包括:
当所述字节数量大于第二预设数量时,确定所述目标字节中的各非截止位;
根据所述截止位以及各非截止位确定所述存储位中的各目标存储位;
将所述待压缩数据中的各预设位数据存储至各目标存储位中;
将所述截止位设置为第一预设值;
将所述各非截止位设置为第二预设值;
根据所述截止位中的第一预设值、所述各非截止位中的第二预设值以及所述各目标存储位中的各预设位数据生成目标压缩数据。
6.如权利要求1所述的方法,其特征在于,所述获取待压缩数据的数据类型之后,还包括:
在所述数据类型不为预设数据类型时,根据所述数据类型确定数据转换策略;
根据所述数据转换策略将所述待压缩数据的数据类型转换为预设数据类型;
确定转换后的所述待压缩数据的数值区间。
7.如权利要求1至6任一项所述的方法,其特征在于,所述基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据之后,还包括:
读取所述目标压缩数据的当前字节;
当所述当前字节的最高位为所述第二预设值时,根据读取顺序确定下一字节;
当所述下一字节的最高位为所述第一预设值时,停止读取,并根据所述当前字节的存储位、所述下一字节的存储位以及所述读取顺序生成解压数据。
8.一种数据压缩装置,其特征在于,所述数据压缩装置包括:
类型获取模块,用于当对待压缩数据进行压缩时,获取所述待压缩数据的数据类型;
区间确定模块,用于当所述数据类型为预设数据类型时,确定所述待压缩数据的数值区间;
策略确定模块,用于根据所述数值区间确定对应的目标压缩策略;
数据压缩模块,用于基于所述目标压缩策略压缩所述待压缩数据,得到目标压缩数据。
9.一种数据压缩设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据压缩程序,所述数据压缩程序配置为实现如权利要求1至7中任一项所述的数据压缩方法。
10.一种存储介质,其特征在于,所述存储介质上存储有数据压缩程序,所述数据压缩程序被处理器执行时实现如权利要求1至7任一项所述的数据压缩方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210134663.7A CN114513209A (zh) | 2022-02-14 | 2022-02-14 | 数据压缩方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210134663.7A CN114513209A (zh) | 2022-02-14 | 2022-02-14 | 数据压缩方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114513209A true CN114513209A (zh) | 2022-05-17 |
Family
ID=81550865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210134663.7A Pending CN114513209A (zh) | 2022-02-14 | 2022-02-14 | 数据压缩方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114513209A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155404A (zh) * | 2023-11-01 | 2023-12-01 | 青岛鼎信通讯股份有限公司 | 一种数据处理的方法、装置、电能表及介质 |
-
2022
- 2022-02-14 CN CN202210134663.7A patent/CN114513209A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117155404A (zh) * | 2023-11-01 | 2023-12-01 | 青岛鼎信通讯股份有限公司 | 一种数据处理的方法、装置、电能表及介质 |
CN117155404B (zh) * | 2023-11-01 | 2024-02-09 | 青岛鼎信通讯股份有限公司 | 一种数据处理的方法、装置、电能表及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10116325B2 (en) | Data compression/decompression device | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN116506073B (zh) | 一种工业计算机平台数据快速传输方法及系统 | |
CN109831409A (zh) | 数据传输方法、装置、计算机可读存储介质及电子设备 | |
CN105868194A (zh) | 文本数据压缩、解压方法及装置 | |
CN112003814B (zh) | 行情数据处理方法、装置、终端设备及存储介质 | |
CN110545106A (zh) | 时序数据的编码方法及装置 | |
CN114513209A (zh) | 数据压缩方法、装置、设备及存储介质 | |
CN113852379A (zh) | 一种数据编码方法、系统、设备及计算机可读存储介质 | |
JP6070568B2 (ja) | 特徴量符号化装置、特徴量符号化方法、及びプログラム | |
WO2024149207A1 (zh) | 数据处理方法和装置、介质和计算机设备 | |
CN109981108B (zh) | 数据压缩方法、解压缩方法、装置及设备 | |
CN111708574B (zh) | 指令流压缩、解压缩方法及装置 | |
CN108933599B (zh) | 一种霍夫曼编码实现方法、系统、设备及计算机存储介质 | |
CN116707532A (zh) | 一种压缩文本的解压方法、装置、存储介质及电子设备 | |
CN114500670B (zh) | 一种编码压缩方法、解码方法及装置 | |
CN113746484B (zh) | 数据压缩与解压缩方法、装置、设备和介质 | |
CN112232025A (zh) | 一种字符串存储方法、装置及电子设备 | |
CN115603758A (zh) | 一种客户号压缩和解压方法及装置 | |
CN109407974B (zh) | 电子装置、基于混肴二进制码的图片删除方法及存储介质 | |
CN115510811A (zh) | 一种字符串编码、解码方法及编码装置和解码装置 | |
US20150130646A1 (en) | Method and system for lzw based decompression | |
CN112883296A (zh) | 可视化页面的加载方法、装置、设备及存储介质 | |
CN118036045B (zh) | 标识生成方法、装置及计算机设备、存储介质、程序产品 | |
CN111836051A (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 |