CN111917745A - 一种数据压缩方法 - Google Patents
一种数据压缩方法 Download PDFInfo
- Publication number
- CN111917745A CN111917745A CN202010687358.1A CN202010687358A CN111917745A CN 111917745 A CN111917745 A CN 111917745A CN 202010687358 A CN202010687358 A CN 202010687358A CN 111917745 A CN111917745 A CN 111917745A
- Authority
- CN
- China
- Prior art keywords
- data
- current
- discontinuous
- continuous
- segment
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及工业设备数据处理技术领域,其目的在于提供一种数据压缩方法,包括以下步骤:S1.获取数据包;S2.初始化参数设置;S3.轮询数据包内的每个数据,并根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,直到数据包内的所有数据轮询一次后,轮询结束;S4.将所有连续数据压缩包和/或非连续数据压缩包顺次存入压缩后的初始数据包内,形成最终数据压缩包。本发明利用工业设备采集数据的连续性及非连续性特性,轮询数据包内的每个数据,然后根据当前数据的连续状态构建当前数据压缩包,能够在保持数据不失真的情况下,有效降低数据占用的字节数。
Description
技术领域
本发明涉及工业设备数据处理技术领域,特别是涉及一种数据压缩方法。
背景技术
在工业设备运行中,工业设备实时采集相关数据,短时间内能产生海量的数据,由于传传输速率的限制,这些数据不能够在有效时间内上传到上位机,因此需要将这些数据进行压缩。
现有技术中,通常采用如字典算法、固定位长算法、RLE算法、哈夫曼算法和LZ77算法等传统的压缩算法对数据进行压缩,上述传统的压缩算法具有适用范围广、高效的特性,然而,上述传统的压缩算法均为静态数据压缩算法,其应用对设备的计算能力和存储能力有一定的要求,由于工业设备的计算水平和存储能力的限制,传统的压缩算法过于复杂,难以满足工业设备的应用需求。
发明内容
本发明旨在至少在一定程度上解决上述技术问题,本发明提供了一种数据压缩方法。
本发明采用的技术方案是:
一种数据压缩方法,包括以下步骤:
S1.获取数据包,所述数据包中包括多个数据;
S2.初始化参数设置,其中,初始化参数包括压缩后的数据包,压缩后的数据包的初始值为空值;
S3.轮询数据包内的每个数据,并根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,直到数据包内的所有数据轮询一次后,轮询结束;
S4.将所有连续数据压缩包和/或非连续数据压缩包顺次存入压缩后的初始数据包内,形成最终数据压缩包。
优选地,所述步骤S2中的初始化参数还包括:
数据段类型标记位、当前连续数据段内连续数据的个数、当前非连续数据段内非连续数据的个数、连续数据段的起始数据、非连续数据段数组和当前数据的前一数据;
所述步骤S2具体包括:
将压缩后的数据包的初始值设置为空值;
将数据段类型标记位的初始值设置为0;其中,数据段类型标记位的值为1时,表示当前数据段为连续数据段,数据段类型标记位的值为0时,表示当前数据段为非连续数据段;
将当前连续数据段内连续数据的个数的初始值设置为0;
将当前非连续数据段内非连续数据的个数的初始值设置为0;
将连续数据段的起始数据的初始值设置为0;
将非连续数据段数组的初始设置为空值;
将当前数据的前一数据的初始值设置为0。
进一步优选地,所述步骤S3的具体步骤如下:
S301.从数据包中按顺序获取一数据,并将该数据定义为当前数据Di,其中i∈{1,2,…,n};
S302.根据当前数据Di和当前数据的前一数据,得到当前数据Di与当前数据的前一数据之间的差值;然后重新定义当前数据的前一数据为当前数据Di;
S303.根据当前数据Di与当前数据的前一数据之间的差值,判断当前数据Di是否为连续数据,若是,则定义当前连续数据段内连续数据的个数=前一当前连续数据段内连续数据的个数+1,并进入步骤S304;若否,则定义当前非连续数据段内非连续数据的个数=前一当前非连续数据段内非连续数据的个数+1,并进入步骤S310;
S304.判断数据段类型标记位是否为0,若是,则进入步骤S305;若否,则进入步骤S307;
S305.判断当前数据是否为下一连续数据段的起始数据;若是,则进入步骤S307;若否,则进入步骤S306;
S306.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入压缩后的数据包内,然后进入步骤S307;
S307.重新定义数据段类型标记位=1,当前连续数据段内连续数据的个数=2,连续数据段的起始数据=Di-1,当前非连续数据段内非连续数据的个数=0;同时清空非连续数据段数组;
S308.判断当前数据是否为最后一个数据,若是,则进入步骤S309;若否,则定义当前i=前一i+1,然后返回步骤S301;
S309.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入压缩后的数据包内;
S310.判断数据段类型标记位是否为0,若是,则进入步骤S311;若否,则进入步骤S312;
S311.将当前数据Di存入非连续数据段数组内,然后进入步骤S314;
S312.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入压缩后的数据包内;
S313.重新定义数据段类型标记位=0,当前连续数据段内连续数据的个数=0,当前非连续数据段内非连续数据的个数=1;同时将当前数据Di存入非连续数据段数组内,然后进入步骤S314;
S314.判断当前数据是否为最后一个数据,若是,则进入步骤S315;若否,则定义当前i=前一i+1,然后返回步骤S301;
S315.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入压缩后的数据包内。
优选地,所述步骤S303中,根据当前数据Di与当前数据的前一数据之间的差值,判断当前数据Di是否为连续数据的具体步骤如下:
获取预设值;
将当前数据Di与当前数据的前一数据之间的差值和预设值比较,若当前数据Di与当前数据的前一数据之间的差值=预设值,则输出当前数据Di为连续数据;若当前数据Di与当前数据的前一数据之间的差值≠预设值,则输出当前数据Di为非连续数据。
优选地,所述步骤S305中,根据当前非连续数据段内非连续数据的个数的值,来确认当前数据是否为下一连续数据段的起始数据,若当前非连续数据段内非连续数据的个数≤1,则当前数据为下一连续数据段的起始数据;若当前非连续数据段内非连续数据的个数>1,则当前数据不为下一连续数据段的起始数据。
进一步优选地,压缩处理连续数据段,形成连续数据压缩包时,具体步骤如下:
获取当前连续数据段内连续数据的个数、预设值和当前数据Di;
根据当前连续数据段内连续数据的个数、预设值和当前数据Di计算得到当前连续数据段的起始数据;
根据当前连续数据段内连续数据的个数和当前连续数据段的起始数据构造连续数据压缩包。
进一步优选地,每一连续数据压缩包均包括第一标记字节和第一数据字节,其中,所述第一标记字节包括连续数据标记位和第一数据长度位,第一数据长度位根据当前连续数据段内连续数据的个数计算得到,所述第一数据字节包括当前连续数据段的起始数据。
进一步优选地,在构造连续数据压缩包前,还包括以下步骤:
对当前连续数据段分段处理,得到多段连续数据的分段连续数据压缩包,连续数据压缩包内包括所有分段连续数据压缩包。
优选地,压缩处理非连续数据段,形成非连续数据压缩包时,具体步骤如下:
获取当前非连续数据段内非连续数据的个数、当前非连续数据段数组;
根据当前非连续数据段内非连续数据的个数和当前非连续数据段数组构造非连续数据压缩包。
进一步优选地,每一非连续数据压缩包均包括第二标记字节和第二数据字节,其中,所述第二标记字节包括非连续数据标记位和第二数据长度位,第二数据长度位根据当前非连续数据段内非连续数据的个数计算得到,所述第二数据字节包括当前非连续数据段内的所有非连续数据。
本发明的有益效果是:能够在保持数据不失真的情况下,有效降低数据占用的字节数。具体地,本发明利用工业设备采集数据的连续性及非连续性特性,轮询数据包内的每个数据,然后根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,从而实现对数据的全部压缩,能够在保持数据不失真的情况下,减小数据的传输量,满足传输要求,有效降低了数据的占用的字节数。
附图说明
图1是实施例2中数据压缩方法的流程图;
图2是本发明中数据解压方法的流程图。
具体实施方式
下面结合附图及具体实施例来对本发明作进一步阐述。在此需要说明的是,对于这些实施例方式的说明虽然是用于帮助理解本发明,但并不构成对本发明的限定。本文公开的特定结构和功能细节仅用于描述本发明的示例实施例。然而,可用很多备选的形式来体现本发明,并且不应当理解为本发明限制在本文阐述的实施例中。
应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,还应当注意到在一些备选实施例中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以不必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清楚。
实施例1:
本实施例提供一种数据压缩方法,包括以下步骤:
S1.获取数据包,数据包中包括多个数据(D1,D2,…,Dn),其中,D1、D2、…、Dn分别为数据,n为数据的总个数。
S2.初始化参数设置,其中,初始化参数包括压缩后的数据包(亦可为:DataCompress),压缩后的数据包的初始值为空值。
S3.轮询数据包内的每个数据,并根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,直到数据包内的所有数据轮询一次后,轮询结束。
S4.将所有连续数据压缩包和/或非连续数据压缩包顺次存入压缩后的初始数据包内,形成最终数据压缩包。
基于工业设备的自身特性,工业设备采集的数据通常占用的字节数较多,数据具有以下两个特点:a.设备正常情况下,数据具有连续性(规整性、规律性和周期性);b.设备运行异常下,数据具有不连续性。
本实施例利用工业设备采集数据的连续性及非连续性特性,轮询数据包内的每个数据,然后根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,从而实现对数据的全部压缩,能够在保持数据不失真的情况下,减小数据的传输量,满足传输要求,有效降低了数据的占用的字节数。
实施例2:
本实施例提供一种数据压缩方法,如图1所示,包括以下步骤:
S1.获取数据包,数据包中包括多个数据(D1,D2,…,Dn),其中,D1、D2、…、Dn分别为数据,n为数据的总个数。
S2.初始化参数设置,其中,初始化参数包括压缩后的数据包(亦可为:DataCompress),压缩后的数据包的初始值为空值。
具体地,步骤S2中的初始化参数还包括:
数据段类型标记位(亦可为:DataTag)、当前连续数据段内连续数据的个数(亦可为:DataCountCont)、当前非连续数据段内非连续数据的个数(亦可为:DataCountUncont)、连续数据段的起始数据(亦可为:DataStart)、非连续数据段数组(亦可为:DataSection)和当前数据的前一数据(亦可为:Dpre),其中,当前数据的前一数据为当前数据的前一个数据;
步骤S2具体包括:
将DataCompress的初始值设置为空值;
将DataTag的初始值设置为0;其中,DataTag的值为1时,表示当前数据段为连续数据段,DataTag的值为0时,表示当前数据段为非连续数据段;
将DataCountCont的初始值设置为0;
将DataCountUncont的初始值设置为0;
将DataStart的初始值设置为0;
将DataSection的初始设置为空值;
将Dpre的初始值设置为0。
S3.轮询数据包内的每个数据,并根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,直到数据包内的所有数据轮询一次后,轮询结束。
本实施例中,步骤S3的具体步骤如下:
S301.从数据包中按顺序获取一数据,并将该数据定义为当前数据Di,其中i∈{1,2,…,n},i为数据包内各数据的序列下标。
S302.根据当前数据Di和Dpre,得到当前数据Di与Dpre之间的差值Diff,其中,当前数据Di与Dpre之间的差值Diff=Di-Dpre;然后重新定义Dpre为当前数据Di,即Dpre=Di。
S303.根据当前数据Di与Dpre之间的差值Diff,判断当前数据Di是否为连续数据,若是,则定义DataCountCont=前一DataCountCont+1,并进入步骤S304;若否,则定义DataCountUncont=前一DataCountUncont+1,并进入步骤S310。
其中,步骤S303中,根据当前数据Di与Dpre之间的差值Diff,判断当前数据Di是否为连续数据的具体步骤如下:
获取预设值;
将当前数据Di与Dpre之间的差值和预设值比较,若当前数据Di与Dpre之间的差值=预设值,则输出当前数据Di为连续数据;若当前数据Di与Dpre之间的差值≠预设值,则输出当前数据Di为非连续数据。
应当理解的是,工业设备采集的连续数据中,相邻数据的差值一定,预设值的设定数值即相邻数据的差值,相邻数据的差值大小根据工业设备的运行状态等工业设备的自身性能、以及数据的采集精度确定。
S304.判断DataTag是否为0,若是,则进入步骤S305;若否,则进入步骤S307。
S305.判断当前数据是否为下一DataStart;若是,则进入步骤S307;若否,则进入步骤S306。
具体地,步骤S305中,根据DataCountUncont的值,来确认当前数据是否为下一DataStart,若DataCountUncont≤1,则当前数据为下一DataStart;若DataCountUncont>1,则当前数据不为下一DataStart。即,当DataCountUncont>1时,说明非连续数据段中数据需要进行压缩处理。
S306.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入DataCompress内,然后进入步骤S307。
S307.重新定义DataTag=1,DataCountCont=2,DataStart=Di-1,DataCountUncont=0;同时清空DataSection。
S308.判断当前数据是否为最后一个数据,若是,则进入步骤S309;若否,则定义当前i=前一i+1,然后返回步骤S301。
S309.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入DataCompress内。
S310.判断DataTag是否为0,若是,则进入步骤S311;若否,则进入步骤S312。
S311.将当前数据Di存入DataSection内,然后进入步骤S314。
S312.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入DataCompress内。
S313.重新定义DataTag=0,DataCountCont=0,DataCountUncont=1;同时将当前数据Di存入DataSection内,然后进入步骤S314。
S314.判断当前数据是否为最后一个数据,若是,则进入步骤S315;若否,则定义当前i=前一i+1,然后返回步骤S301。
S315.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入DataCompress内。
步骤S3的设置,实现了对连续数据段和非连续数据段的判断及压缩处理,算法简单高效。
本实施例的步骤S309和步骤S312中,压缩处理连续数据段,形成连续数据压缩包时,具体步骤如下:
获取DataCountCont、预设值和当前数据Di;
根据DataCountCont、预设值和当前数据Di计算得到当前DataStart(亦可为:DataStart),其中当前DataStart=当前数据Di-(DataCountCont-1)*预设值;
对当前连续数据段分段处理,得到多段连续数据的分段连续数据压缩包,连续数据压缩包内包括所有分段连续数据压缩包;
根据DataCountCont和当前DataStart构造连续数据压缩包。
具体地,每一连续数据压缩包均包括第一标记字节和第一数据字节,其中,第一标记字节包括连续数据标记位和第一数据长度位,第一数据长度位根据DataCountCont计算得到,第一数据字节包括当前DataStart。
本实施例的步骤S306和步骤S315中,压缩处理非连续数据段,形成非连续数据压缩包时,具体步骤如下:
获取DataCountUncont、当前DataSection;
根据DataCountUncont和当前DataSection构造非连续数据压缩包。
具体地,每一非连续数据压缩包均包括第二标记字节和第二数据字节,其中,第二标记字节包括非连续数据标记位和第二数据长度位,第二数据长度位根据DataCountUnCont计算得到,第二数据字节包括当前非连续数据段内的所有非连续数据。
S4.将所有连续数据压缩包和/或非连续数据压缩包顺次存入压缩后的初始数据包内,形成最终数据压缩包。
假设数据为:
D<sub>1</sub> | D<sub>2</sub> | D<sub>3</sub> | …… | D<sub>m-1</sub> | D<sub>m</sub> | D<sub>m+r1</sub> | D<sub>m+r2</sub> | D<sub>m+r3</sub> | D<sub>m+r3+1</sub> | …… | D<sub>n-1</sub> | D<sub>n</sub> |
其中,Di代表第i个数据,i的取值范围为{1,2,...,n};数值r1、r2和r3均为大于0的整数;数据段“D1…Dm”、数据段“Dm+r3…Dn”是连续数据段,数据段“Dm+r1、Dm+r2”是非连续数据段;
数据压缩包中的1个标记字节包括8个数据位,具体地,1个标记字节如下:
b<sub>1</sub> | b<sub>2</sub> | b<sub>3</sub> | b<sub>4</sub> | b<sub>5</sub> | b<sub>6</sub> | b<sub>7</sub> | b<sub>8</sub> |
其中,b1为连续数据标记位,当b1为1时,代表该数据压缩包为连续数据压缩包,此时b1代表连续数据标记位,b2-b8为第一数据长度位;当b1为0时,代表该数据压缩包为非连续数据压缩包,此时b1代表非连续数据标记位,b2-b8为第二数据长度位。应当理解的是,b2-b8的值只可为0或1,在数据压缩过程中,采用二进制算法存储数据的长度,因而,第一数据长度位和第二数据长度位表示的数据最大长度均为127,如此可在保证数据压缩包中的标记字节的占用存储空间最小的前提下,压缩更多长度的连续数据。
以T指代标记字节,以T1指代的连续数据段“D1…Dm”的标记字节,以T2指代连续数据段“Dm+r3…Dn”的标记字节,以T3指代非连续数据段“Dm+r1、Dm+r2”的标记字节。则,压缩连续数据段“D1…Dm”得到的连续数据压缩包为:
T<sub>1</sub> | D<sub>1</sub> |
压缩处理连续数据段“Dm+r3…Dn”得到的连续数据压缩包为:
T<sub>2</sub> | D<sub>m+r3</sub> |
压缩处理非连续数据段“Dm+r1、Dm+r2”得到的非连续数据压缩包为:
T<sub>3</sub> | D<sub>m+r1</sub> | D<sub>m+r2</sub> |
将所有连续数据压缩包和非连续数据压缩包顺次存入压缩后的数据包内,形成的最终数据压缩包为:
T<sub>1</sub> | D<sub>1</sub> | T<sub>2</sub> | D<sub>m+r3</sub> | T<sub>3</sub> | D<sub>m+r1</sub> | D<sub>m+r2</sub> |
本实施例中,对于连续数据段,将连续的一段数据压缩成标记字段和起始数据,对于非连续数据段,使用区别于连续数据的标记字段和不连续数据进行标记,由于异常数据占比很小,可以有效降低数据占用的字节数,尤其适用于采集的数据中,单个数据字节占用较多、连续性数据占比高且非连续性数据占比低的工业设备使用。
数据压缩后,对压缩后的数据包的解压方法的流程图如图2所示,在需要对压缩数据进行解压时,在接收端可以利用连续数据及非连续数据逆特性,进行数据的快速解压,恢复出原有的数据,此处不予赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所描述的多个实施例仅仅是示意性的,若涉及到作为分离部件说明的单元,其可以是或者也可以不是物理上分开的;若涉及到作为单元显示的部件,其可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
最后应说明的是,本发明不局限于上述可选的实施方式,任何人在本发明的启示下都可得出其他各种形式的产品。上述具体实施方式不应理解成对本发明的保护范围的限制,本发明的保护范围应当以权利要求书中界定的为准,并且说明书可以用于解释权利要求书。
Claims (10)
1.一种数据压缩方法,其特征在于:包括以下步骤:
S1.获取数据包,所述数据包中包括多个数据;
S2.初始化参数设置,其中,初始化参数包括压缩后的数据包,压缩后的数据包的初始值为空值;
S3.轮询数据包内的每个数据,并根据当前数据的连续状态构建当前数据压缩包,当前数据压缩包包括连续数据压缩包和/或非连续数据压缩包,直到数据包内的所有数据轮询一次后,轮询结束;
S4.将所有连续数据压缩包和/或非连续数据压缩包顺次存入压缩后的初始数据包内,形成最终数据压缩包。
2.根据权利要求1所述的一种数据压缩方法,其特征在于:所述步骤S2中的初始化参数还包括:
数据段类型标记位、当前连续数据段内连续数据的个数、当前非连续数据段内非连续数据的个数、连续数据段的起始数据、非连续数据段数组和当前数据的前一数据;
所述步骤S2具体包括:
将压缩后的数据包的初始值设置为空值;
将数据段类型标记位的初始值设置为0;其中,数据段类型标记位的值为1时,表示当前数据段为连续数据段,数据段类型标记位的值为0时,表示当前数据段为非连续数据段;
将当前连续数据段内连续数据的个数的初始值设置为0;
将当前非连续数据段内非连续数据的个数的初始值设置为0;
将连续数据段的起始数据的初始值设置为0;
将非连续数据段数组的初始设置为空值;
将当前数据的前一数据的初始值设置为0。
3.根据权利要求2所述的一种数据压缩方法,其特征在于:所述步骤S3的具体步骤如下:
S301.从数据包中按顺序获取一数据,并将该数据定义为当前数据Di,其中i∈{1,2,…,n};
S302.根据当前数据Di和当前数据的前一数据,得到当前数据Di与当前数据的前一数据之间的差值;然后重新定义当前数据的前一数据为当前数据Di;
S303.根据当前数据Di与当前数据的前一数据之间的差值,判断当前数据Di是否为连续数据,若是,则定义当前连续数据段内连续数据的个数=前一当前连续数据段内连续数据的个数+1,并进入步骤S304;若否,则定义当前非连续数据段内非连续数据的个数=前一当前非连续数据段内非连续数据的个数+1,并进入步骤S310;
S304.判断数据段类型标记位是否为0,若是,则进入步骤S305;若否,则进入步骤S307;
S305.判断当前数据是否为下一连续数据段的起始数据;若是,则进入步骤S307;若否,则进入步骤S306;
S306.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入压缩后的数据包内,然后进入步骤S307;
S307.重新定义数据段类型标记位=1,当前连续数据段内连续数据的个数=2,连续数据段的起始数据=Di-1,当前非连续数据段内非连续数据的个数=0;同时清空非连续数据段数组;
S308.判断当前数据是否为最后一个数据,若是,则进入步骤S309;若否,则定义当前i=前一i+1,然后返回步骤S301;
S309.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入压缩后的数据包内;
S310.判断数据段类型标记位是否为0,若是,则进入步骤S311;若否,则进入步骤S312;
S311.将当前数据Di存入非连续数据段数组内,然后进入步骤S314;
S312.压缩处理连续数据段,形成连续数据压缩包,然后将连续数据压缩包顺次存入压缩后的数据包内;
S313.重新定义数据段类型标记位=0,当前连续数据段内连续数据的个数=0,当前非连续数据段内非连续数据的个数=1;同时将当前数据Di存入非连续数据段数组内,然后进入步骤S314;
S314.判断当前数据是否为最后一个数据,若是,则进入步骤S315;若否,则定义当前i=前一i+1,然后返回步骤S301;
S315.压缩处理非连续数据段,形成非连续数据压缩包,然后将非连续数据压缩包顺次存入压缩后的数据包内。
4.根据权利要求3所述的一种数据压缩方法,其特征在于:所述步骤S303中,根据当前数据Di与当前数据的前一数据之间的差值,判断当前数据Di是否为连续数据的具体步骤如下:
获取预设值;
将当前数据Di与当前数据的前一数据之间的差值和预设值比较,若当前数据Di与当前数据的前一数据之间的差值=预设值,则输出当前数据Di为连续数据;若当前数据Di与当前数据的前一数据之间的差值≠预设值,则输出当前数据Di为非连续数据。
5.根据权利要求3所述的一种数据压缩方法,其特征在于:所述步骤S305中,根据当前非连续数据段内非连续数据的个数的值,来确认当前数据是否为下一连续数据段的起始数据,若当前非连续数据段内非连续数据的个数≤1,则当前数据为下一连续数据段的起始数据;若当前非连续数据段内非连续数据的个数>1,则当前数据不为下一连续数据段的起始数据。
6.根据权利要求4所述的一种数据压缩方法,其特征在于:压缩处理连续数据段,形成连续数据压缩包时,具体步骤如下:
获取当前连续数据段内连续数据的个数、预设值和当前数据Di;
根据当前连续数据段内连续数据的个数、预设值和当前数据Di计算得到当前连续数据段的起始数据;
根据当前连续数据段内连续数据的个数和当前连续数据段的起始数据构造连续数据压缩包。
7.根据权利要求6所述的一种数据压缩方法,其特征在于:每一连续数据压缩包均包括第一标记字节和第一数据字节,其中,所述第一标记字节包括连续数据标记位和第一数据长度位,第一数据长度位根据当前连续数据段内连续数据的个数计算得到,所述第一数据字节包括当前连续数据段的起始数据。
8.根据权利要求6所述的一种数据压缩方法,其特征在于:在构造连续数据压缩包前,还包括以下步骤:
对当前连续数据段分段处理,得到多段连续数据的分段连续数据压缩包,连续数据压缩包内包括所有分段连续数据压缩包。
9.根据权利要求3所述的一种数据压缩方法,其特征在于:压缩处理非连续数据段,形成非连续数据压缩包时,具体步骤如下:
获取当前非连续数据段内非连续数据的个数、当前非连续数据段数组;
根据当前非连续数据段内非连续数据的个数和当前非连续数据段数组构造非连续数据压缩包。
10.根据权利要求9所述的一种数据压缩方法,其特征在于:每一非连续数据压缩包均包括第二标记字节和第二数据字节,其中,所述第二标记字节包括非连续数据标记位和第二数据长度位,第二数据长度位根据当前非连续数据段内非连续数据的个数计算得到,所述第二数据字节包括当前非连续数据段内的所有非连续数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687358.1A CN111917745B (zh) | 2020-07-16 | 2020-07-16 | 一种数据压缩方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010687358.1A CN111917745B (zh) | 2020-07-16 | 2020-07-16 | 一种数据压缩方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111917745A true CN111917745A (zh) | 2020-11-10 |
CN111917745B CN111917745B (zh) | 2022-07-22 |
Family
ID=73281288
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010687358.1A Active CN111917745B (zh) | 2020-07-16 | 2020-07-16 | 一种数据压缩方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111917745B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160127522A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Transmitting apparatus and signal processing method thereof |
CN106294548A (zh) * | 2016-07-25 | 2017-01-04 | 华中科技大学 | 一种溯源数据的压缩方法及系统 |
CN106790550A (zh) * | 2016-12-23 | 2017-05-31 | 华中科技大学 | 一种适用于配电网监测数据压缩的系统 |
CN108616280A (zh) * | 2018-04-09 | 2018-10-02 | 重庆大学 | 非稳态数据实时采集数据压缩方法 |
CN109787638A (zh) * | 2019-01-10 | 2019-05-21 | 杭州幻方科技有限公司 | 一种数据压缩存储处理装置及方法 |
CN109802922A (zh) * | 2017-11-16 | 2019-05-24 | 电信科学技术研究院 | 一种缓存同步异常的处理方法和设备 |
CN109802683A (zh) * | 2018-12-20 | 2019-05-24 | 深圳科安达电子科技股份有限公司 | 一种基于参数识别的轨道电路监测数据压缩方法和处理系统 |
CN110830437A (zh) * | 2019-09-25 | 2020-02-21 | 平安科技(深圳)有限公司 | 高频业务数据的数据压缩方法、装置、设备及存储介质 |
CN110958022A (zh) * | 2019-12-25 | 2020-04-03 | 平安证券股份有限公司 | 连续性曲线的数据压缩方法、装置及其相关设备 |
-
2020
- 2020-07-16 CN CN202010687358.1A patent/CN111917745B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160127522A1 (en) * | 2014-11-04 | 2016-05-05 | Samsung Electronics Co., Ltd. | Transmitting apparatus and signal processing method thereof |
CN106294548A (zh) * | 2016-07-25 | 2017-01-04 | 华中科技大学 | 一种溯源数据的压缩方法及系统 |
CN106790550A (zh) * | 2016-12-23 | 2017-05-31 | 华中科技大学 | 一种适用于配电网监测数据压缩的系统 |
CN109802922A (zh) * | 2017-11-16 | 2019-05-24 | 电信科学技术研究院 | 一种缓存同步异常的处理方法和设备 |
CN108616280A (zh) * | 2018-04-09 | 2018-10-02 | 重庆大学 | 非稳态数据实时采集数据压缩方法 |
CN109802683A (zh) * | 2018-12-20 | 2019-05-24 | 深圳科安达电子科技股份有限公司 | 一种基于参数识别的轨道电路监测数据压缩方法和处理系统 |
CN109787638A (zh) * | 2019-01-10 | 2019-05-21 | 杭州幻方科技有限公司 | 一种数据压缩存储处理装置及方法 |
CN110830437A (zh) * | 2019-09-25 | 2020-02-21 | 平安科技(深圳)有限公司 | 高频业务数据的数据压缩方法、装置、设备及存储介质 |
CN110958022A (zh) * | 2019-12-25 | 2020-04-03 | 平安证券股份有限公司 | 连续性曲线的数据压缩方法、装置及其相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111917745B (zh) | 2022-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474281B (zh) | 数据编码、解码方法及装置 | |
CN112506880B (zh) | 数据处理方法及相关设备 | |
CN112506879B (zh) | 数据处理方法及相关设备 | |
CN106685429B (zh) | 整数压缩方法及装置 | |
JP2019530269A (ja) | 符号化方法およびデバイスならびに装置 | |
JPH0918346A (ja) | データ圧縮及び伸長方法 | |
CN110545417B (zh) | 一种桌面场景的图像编码、解码方法及相关装置 | |
CN111491169B (zh) | 一种数字图像压缩方法、装置、设备、介质 | |
CN114915295B (zh) | 一种特定条件下超越熵极限的符号编码方法 | |
CN114222129A (zh) | 图像压缩编码方法、装置、计算机设备和存储介质 | |
CN115002465A (zh) | 基于嵌入式系统图片的无损压缩算法、装置、计算机设备及存储介质 | |
CN111917745B (zh) | 一种数据压缩方法 | |
Yeh et al. | On the optimality of code options for a universal noiseless coder | |
GB2060226A (en) | Data compression-decompression | |
WO2020258942A1 (zh) | 一种数据压缩方法及装置 | |
CN110442557B (zh) | 数据压缩及解压缩方法、电子设备和计算机可读存储介质 | |
CN112508040A (zh) | 一种图像识别方法及相关装置 | |
CN115632661B (zh) | 网络安全信息高效压缩传输方法 | |
CN115865099A (zh) | 基于霍夫曼编码的多类型数据分段压缩方法及系统 | |
CN112449191A (zh) | 压缩多个图像的方法、解压缩图像的方法和装置 | |
CN110913220A (zh) | 一种视频帧编码方法、装置及终端设备 | |
CN115913248A (zh) | 一种直播软件开发数据智能管理系统 | |
CN112054805B (zh) | 一种模型数据压缩方法、系统及相关设备 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
KR101549740B1 (ko) | 이진 데이터의 압축 및 압축해제 방법과 장치 |
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 |