CN111510153B - 数列的压缩、解压缩方法和装置以及电子设备 - Google Patents
数列的压缩、解压缩方法和装置以及电子设备 Download PDFInfo
- Publication number
- CN111510153B CN111510153B CN201910100887.4A CN201910100887A CN111510153B CN 111510153 B CN111510153 B CN 111510153B CN 201910100887 A CN201910100887 A CN 201910100887A CN 111510153 B CN111510153 B CN 111510153B
- Authority
- CN
- China
- Prior art keywords
- data
- sequence
- storage
- difference value
- difference
- 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.)
- Active
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
技术领域
本发明涉及数据压缩技术领域,尤其涉及一种数列的压缩、解压缩方法和装置以及电子设备。
背景技术
数据压缩,是指在不丢失有用信息的前提下,缩减数据量以减少数据的存储空间,从而提高数据的传输、存储和处理效率。
在现有技术中,通常是对数据本身直接进行压缩。例如,常见的哈夫曼编码压缩方式,按照数据中字符的出现频率进行编码,字符的出现频率越高,其编码越短,字符的出现频率越低,其编码越长,从而在一定程度上,能够压缩数据的存储空间。
发明人在实现本发明的过程中,发现现有技术至少存在如下问题:在大多数字符的出现频率都不高的情况下,采用直接压缩算法,尤其是采用哈夫曼编码进行数据压缩,则压缩率较低,甚至可能会出现数据膨胀(即,压缩后的数据反而比原始数据更大)的情况。
发明内容
本发明实施例提供一种数列的压缩、解压缩方法和装置以及电子设备,以解决现有技术中直接压缩算法的压缩率较低的缺陷。
为达到上述目的,本发明实施例提供了一种数列的压缩方法,包括:
将有序数列中的数值取差值,得到包含差值数据的差值数列;
在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式;
按照所述相匹配的存储模式,存储所述差值数列。
本发明实施例还提供了一种数列的解压缩方法,其中,用于存储压缩数据的存储单元由两部分组成,该方法包括:
从所述存储单元的第一部分读取模式代码,所述模式代码与所述压缩数据的存储模式相对应;
根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原所述数列。
本发明实施例还提供了一种数列的压缩装置,包括:
差值数列获取模块,用于将有序数列中的数值取差值,得到包含差值数据的差值数列;
模式获取模块,用于在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式;
存储模块,用于按照所述相匹配的存储模式,存储所述差值数列。
本发明实施例还提供了一种数列的解压缩装置,其中,用于存储压缩数据的存储单元由两部分组成,该装置包括:
第一读取模块,用于从所述存储单元的第一部分读取模式代码,所述模式代码与所述压缩数据的存储模式相对应;
第二读取模块,用于根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
还原模块,用于将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原所述数列。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
将有序数列中的数值取差值,得到包含差值数据的差值数列;
在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式;
按照所述相匹配的存储模式,存储所述差值数列。
本发明实施例还提供了一种电子设备,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
从存储单元的第一部分读取模式代码,所述模式代码与压缩数据的存储模式相对应;
根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原所述数列。
本发明实施例提供的数列的压缩、解压缩方法和装置以及电子设备,通过对有序数列进行差值处理,根据各差值数据的大小,按照不同的存储模式进行存储,以达到用最小的空间存储数据的目的,从而提高了数列压缩的压缩率,降低了存储空间占用,进而提高数据的读取速度。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例提供的业务***的***框图;
图2为本发明提供的数列的压缩方法一个实施例的流程图;
图3为本发明提供的数列的压缩方法另一个实施例的流程图;
图4为本发明提供的数列的解压缩方法一个实施例的流程图;
图5为本发明提供的数列的压缩装置一个实施例的结构示意图;
图6为本发明提供的数列的压缩装置另一个实施例的结构示意图;
图7为本发明提供的数列的解压缩装置一个实施例的结构示意图;
图8为本发明提供的电子设备一个实施例的结构示意图;
图9为本发明提供的电子设备另一个实施例的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
针对现有技术中,在大多数字符的出现频率都不高的情况下,采用直接压缩算法,尤其是采用哈夫曼编码进行数据压缩,压缩率较低,甚至可能会出现数据膨胀的缺陷。本申请提出了一种数列的压缩方案,其主要原理是:针对有序数列中的数值进行差值处理,将差值数据按照一定的模式进行存储(将大的数值取差值后,差值比原始数值小,因此能够减小存储空间,例如,假设待存储数列为31,34和38,则其取差值后的差值数列为31,3和4,存储这样的差值,能够大大减小数据占用的空间)。在选择存储模式时,还可进一步选择能够以最小的空间存储这些数据的存储模式,从而进一步提高数列压缩的压缩率。
本发明实施例提供的方法可应用于任何具有数据处理功能的业务***。图1为本发明实施例提供的业务***的***框图,图1所示的结构仅仅是本发明的技术方案可以应用的业务***的示例之一。如图1所示,业务***中包括压缩装置。该压缩装置包括:差值数列获取模块、模式获取模块和存储模块,可以用来执行下述图2和图3所示的处理流程。在该业务***中,首先,将有序数列中的数值取差值,得到包含差值数据的差值数列;然后,在预设的存储模式集合中,获取与差值数列中各数据的大小相匹配的存储模式;最后,按照相匹配的存储模式,存储差值数列,以达到用最小的空间存储数据的目的,从而提高数列压缩的压缩率,降低存储空间占用,提高数据的读取速度。另一方面,为了对压缩数据进行解压缩,该业务***中还可包括解压缩装置。该解压缩装置包括:第一读取模块、第二读取模块和还原模块,可以用来执行下述图4所示的处理流程。在该业务***进行解压缩的过程中,首先,从存储单元的第一部分读取模式代码;然后,根据该模式代码对应的存储模式,从存储单元的第二部分读取压缩数据;最后,将读取到的压缩数据与预设数值进行逻辑与操作,以还原数列。
上述实施例是对本发明实施例的技术原理和示例性的应用框架的说明,下面通过多个实施例来进一步对本发明实施例具体技术方案进行详细描述。
实施例一
图2为本发明提供的数列的压缩方法一个实施例的流程图,该方法的执行主体可以为上述业务***,也可以为具有数据处理功能的各种终端设备,也可以为集成在这些终端设备上的装置或芯片。如图2所示,该数列的压缩方法包括如下步骤:
S201,将有序数列中的数值取差值,得到包含差值数据的差值数列。
在本发明实施例中,待压缩的数据可以为索引数据,例如,信息点(Point ofInformation;以下简称:POI)数据的索引数据。POI数据可以包括:ID、经纬度、行政区域、名称、类型、显示级别、重要度等字段。一般情况下,POI数据是按照重要度排序的。将POI数据的存储位置索引ID按照从小到大的顺序排序后,便得到一组有序数列。本发明实施例则可以针对该有序的索引数据进行压缩处理。
首先,需要对有序数列中的各数值做差值处理,得到差值数据,由这些差值数据组成差值数列,以进行后续处理。
S202,在预设的存储模式集合中,获取与差值数列中各数据的大小相匹配的存储模式。
在本发明实施例中,***中可以预先设置不同的存储模式,每一种存储模式中可以容纳不同大小及数量的数据,这些不同的存储模式组成了存储模式集合。当对有序数列进行处理得到差值数列后,在预设的存储模式集合中,寻找与该差值数列中各数据的大小相匹配的存储模式,使得能够以最小的空间存储数据。
S203,按照相匹配的存储模式,存储差值数列。
在本发明实施例中,当获取到与差值数列中各数据的大小相匹配的存储模式后,则按照该存储模式所规定的存储规则(例如,在存储单元的第n位至第n+m位存储第s个数据等,在这里,n、m、s均为正整数)依次存储差值数列中的数据。
本发明实施例提供的数列的压缩方法,通过对有序数列进行差值处理,根据各差值数据的大小,按照不同的存储模式进行存储,以达到用最小的空间存储数据的目的,从而提高了数列压缩的压缩率,降低了存储空间占用,进而提高数据的读取速度。
实施例二
图3为本发明提供的数列的压缩方法另一个实施例的流程图。如图3所示,在上述图2所示实施例的基础上,本实施例提供的数列的压缩方法还可以包括以下步骤:
S301,对数列中的数值按照从小到大的顺序进行排序,得到有序数列。
在本发明实施例中,当待压缩的数列是无序数列时,首先需要对数列进行预处理,即,对数列中的数值按照从小到大的顺序进行排序,得到有序数列,这要能够保证后续差值处理得到的差值数据为非负数,且尽可能小,使得尽可能占用较少的存储空间。
S302,在有序数列中,以第一个数值为基础,其余数值依次向前取差值,得到差值数据。
在本发明实施例中,在对有序数列中的数值进行差值处理时,一般地,可以以有序数列中的第一个数值为基础,其余的数值则依次向前取差值,从而得到差值数据。例如,假设待压缩的有序数列为31,34和38,则,以第一个数值31为基础,其余数值34和38依次向前取差值,即,34向前与31取差值得到差值数据3,38向前与34取差值得到差值数据4。
S303,将有序数列的第一个数值与得到的差值数据,组成差值数列。
在本发明实施例中,由于差值处理操作是以有序数列的第一个数据为基础进行的,因此,在压缩数据时,需要保留该第一个数据,这样才能保证在后续解压缩时能够还原出原始数据。因此,需要将有序数列中的第一个数值与上述步骤S302中得到的差值数据一起,组成差值数列,以进行后续存储操作。
S304,在存储模式集合中,迭代选取可容纳差值数列中各数据的存储模式。
在本发明实施例中,***中可以预先设置不同的存储模式,每一种存储模式中可以容纳不同大小及数量的数据,这些不同的存储模式组成了存储模式集合。举例说明,假设针对32位int(整数类型)的存储单元,可以设置16种常用的存储模式。在各存储模式中,将32位的存储单元分为两部分,第一部分用4位(第1至4位)记录存储模式的模式代码;第二部分用28位(第5至32位)存储数据,具体地,可以将第二部分划分为不同的存储子单元,以存储多条数据。
16种存储模式按照使用频率由高到低的顺序可以依次为:
存储模式1:1bit*28(指,在第5至32位中,每1位用于存储一条数据,则该存储模式可以存储28条数据);
存储模式2:2bit*7+1bit*14(指,在第5至18位中,每2位用于存储一条数据,在第19至32位中,每1位用于存储一条数据,则该存储模式可以存储21(7+14)条数据);
存储模式3:1bit*7+2bit*7+1bit*7(指,在第5至11位中,每1位用于存储一条数据,在第12至25位中,每2位用于存储一跳数据,在第26至32位中,每1位用于存储一条数据,则该存储模式可以存储21(7+7+7)条数据);
存储模式4:1bit*14+2bit*7(指,在第5至18位中,每1位用于存储一条数据,在第19至32位中,每2位用于存储一条数据,则该存储模式可以存储21(14+7)条数据);
存储模式5:2bit*14(指,在第5至32位中,每2位用于存储一条数据,则该存储模式可以存储14条数据);
存储模式6:4bit*1+3bit*8(指,在第5至8位中,每4位用于存储一条数据,在第9至32位中,每3位用于存储一条数据,则该存储模式可以存储9(1+8)条数据);
存储模式7:3bit*1+4bit*4+3bit*3(指,在第5至7位中,每3位用于存储一条数据,在第8至23位中,每4位用于存储一跳数据,在第24至32位中,每3位用于存储一条数据,则该存储模式可以存储8(1+4+3)条数据);
存储模式8:4bit*7(指,在第5至32位中,每4位用于存储一条数据,则该存储模式可以存储7条数据);
存储模式9:5bit*4+4bit*2(指,在第5至24位中,每5位用于存储一条数据,在第25至32位中,每4位用于存储一条数据,则该存储模式可以存储6(4+2)条数据);
存储模式10:4bit*2+5bit*4(指,在第5至12位中,每4位用于存储一条数据,在第13至32位中,每5位用于存储一条数据,则该存储模式可以存储6(2+4)条数据);
存储模式11:6bit*3+5bit*2(指,在第5至22位中,每6位用于存储一条数据,在第23至32位中,每5位用于存储一条数据,则该存储模式可以存储5(3+2)条数据);
存储模式12:5bit*2+6bit*3(指,在第5至14位中,每5位用于存储一条数据,在第15至32位中,每6位用于存储一条数据,则该存储模式可以存储5(2+3)条数据);
存储模式13:7bit*4(指,在第5至32位中,每7位用于存储一条数据,则该存储模式可以存储4条数据);
存储模式14:10bit*1+9bit*2(指,在第5至14位中,每10位用于存储一条数据,在第15至32位中,每9位用于存储一条数据,则该存储模式可以存储3(1+2)条数据);
存储模式15:14bit*2(指,在第5至32位中,每14位用于存储一条数据,则该存储模式可以存储2条数据);
存储模式16:28bit*1(指,在第5至32位中,每28位用于存储一条数据,则该存储模式可以存储1条数据)。
在本发明实施例中,当对有序数列进行处理得到差值数列后,可以在上述16种存储模式中,迭代选取可容纳该差值数列中各数据的存储模式。即,则针对每一个数据,按照上述存储模式的顺序,依次进行匹配。当第1个数据与某个存储模式的第一个存储子单元匹配(即,该存储子单元能够容纳该数据)时,判断第2个数据是否与该存储模式的第2个存储子单元匹配,如果匹配,则继续进行第3个数据的匹配操作,以此类推,直至该存储模式所有存储子单元均匹配;如果某个数据不匹配,则需要从第1个数据开始,重新与下一个存储模式的第1个存储子单元开始进行匹配,直至找到合适的存储模式为止。
举例说明,假设某差值数列中的数据(4个)分别为:11010(5位)、11101(5位)、110110(6位)、1011011(7位)。则第1个数据11010与存储模式9的第一个存储子单元(5位)匹配,而第2个数据11101与存储模式9的第二个存储子单元(5位)也匹配,但是第3个数据110110与存储模式9的第三个存储子单元(5位)不匹配,因此,需要在下一个存储模式中,从第1个数据11010开始重新进行匹配操作。以此类推,直到匹配到存储模式13(7bit*4)。通过匹配发现,该存储模式可以容纳差值数列中的四个数据。
S305,将相匹配的存储模式的模式代码存储于存储单元的第一部分。
S306,按照相匹配的存储模式,将存储单元的第二部分划分为至少一个存储子单元。
S307,将差值数列中的数据依次存储于存储子单元中。
在本发明实施例中,如上所述,用于存储差值数列的存储单元由两部分组成,第一部分用于存储匹配的存储模式的模式代码,第二部分用于存储差值数列中的数据。首先根据相匹配的存储模式将存储单元的第二部分划分为至少一个存储子单元,然后,将差值数列中的数据依次存入这些存储子单元中。
以上述例子为例,按照存储模式13存储差值数列,因此,存储单元(32位)的第一部分(前4位)的内容为:1101(对应模式代码13),而第二部分(后28位)的内容为:0011010|0011101|0110110|1011011。
本发明实施例提供的数列的压缩方法,通过对有序数列进行差值处理,根据差值序列中各数据的大小,迭代选取可容纳该差值序列的存储模式进行存储,以达到用最小的空间存储数据的目的,从而提高了数列压缩的压缩率,降低了存储空间占用,进而提高数据的读取速度。
实施例三
图4为本发明提供的数列的解压缩方法一个实施例的流程图。如图4所示,本发明实施例提供的数列的解压缩方法包括以下步骤:
S401,从存储单元的第一部分读取模式代码。
在本发明实施例中,用于存储压缩数据的存储单元由两部分组成,其中,第一部分用于存储模式代码,该模式代码与压缩数据的存储模式相对应。
S402,根据压缩数据的存储模式,从存储单元的第二部分读取压缩数据。
在本发明实施例中,存储单元的第二部分用于存储压缩数据,因此,根据上述步骤S401中读取到的模式代码,确定数据的存储模式,然后,按照该存储模式的存储规则,依次读取第二部分中的压缩数据。
S403,将读取到的压缩数据与预设数值进行逻辑与操作,以还原数列。
在本发明实施例中,在通过上述步骤S402读取到的压缩数据后,针对每一个压缩数据,可将其与0xffffffff进行逻辑“与”操作,从而得到压缩前的数据。
本发明实施例提供的数列的解压缩方法,针对有序数列通过差值处理后按照预设存储模式进行存储后的压缩数据,进行解压缩,通过读取存储单元中的模式代码获取数据的存储模式,进而按照存储获取读取压缩数据,并还原出原始有序数列,降低了存储空间占用,提高数据的读取速度。
实施例四
图5为本发明提供的数列的压缩装置一个实施例的结构示意图,可用于执行如图2所示的方法步骤。如图5所示,该装置可以包括:差值数列获取模块51、模式获取模块52和存储模块53。
其中,差值数列获取模块51用于将有序数列中的数值取差值,得到包含差值数据的差值数列;模式获取模块52用于在预设的存储模式集合中,获取与差值数列中各数据的大小相匹配的存储模式;存储模块53用于按照相匹配的存储模式,存储差值数列。
在本发明实施例中,待压缩的数据可以为索引数据,例如,POI数据的索引数据。将POI数据的存储位置索引ID按照从小到大的顺序排序后,便得到一组有序数列。本发明实施例则可以针对该有序的索引数据进行压缩处理。
首先,差值数列获取模块51对有序数列中的各数值做差值处理,得到差值数据,由这些差值数据组成差值数列,以进行后续处理。然后,模式获取模块52在预设的存储模式集合中,寻找与差值数列获取模块51获取的差值数列中各数据的大小相匹配的存储模式,使得能够以最小的空间存储数据。存储模块53则按照模式获取模块52获取到的存储模式所规定的存储规则(例如,在存储单元的第n位至第n+m位存储第s个数据等,在这里,n、m、s均为正整数)依次存储差值数列中的数据。
本发明实施例提供的数列的压缩装置,通过对有序数列进行差值处理,根据各差值数据的大小,按照不同的存储模式进行存储,以达到用最小的空间存储数据的目的,从而提高了数列压缩的压缩率,降低了存储空间占用,进而提高数据的读取速度。
实施例五
图6为本发明提供的数列的压缩装置另一个实施例的结构示意图,可用于执行如图3所示的方法步骤。如图6所示,在上述图5所示实施例的基础上,本发明实施例提供的数列的压缩装置中,差值数列获取模块51可以包括:差值处理子模块511和差值数列形成子模块512。
其中,差值处理子模块511用于在有序数列中,以第一个数值为基础,其余数值依次向前取差值,得到差值数据;差值数列形成子模块512用于将有序数列的第一个数值与差值处理子模块511得到的差值数据,组成差值数列。
在本发明实施例中,差值处理子模块511在对有序数列中的数值进行差值处理时,一般地,可以以有序数列中的第一个数值为基础,其余的数值则依次向前取差值,从而得到差值数据。由于差值处理操作是以有序数列的第一个数据为基础进行的,因此,在压缩数据时,需要保留该第一个数据,这样才能保证在后续解压缩时能够还原出原始数据。因此,差值数列形成子模块512需要将有序数列中的第一个数值与差值处理子模块511得到的差值数据一起,组成差值数列,以进行后续存储操作。
进一步地,本发明实施例提供的数列的压缩装置还可以包括:排序模块61。该排序模块61可以用于对数列中的数值按照从小到大的顺序进行排序,得到有序数列。
在本发明实施例中,当待压缩的数列是无序数列时,首先需要由排序模块61对数列进行预处理,即,对数列中的数值按照从小到大的顺序进行排序,得到有序数列,这要能够保证后续差值处理得到的差值数据为非负数,且尽可能小,使得尽可能占用较少的存储空间。
更进一步地,模式获取模块52还可以用于在存储模式集合中,迭代选取可容纳差值数列中各数据的存储模式。
在本发明实施例中,***中可以预先设置不同的存储模式,每一种存储模式中可以容纳不同大小及数量的数据,这些不同的存储模式组成了存储模式集合。当差值数列形成子模块512形成差值数列后,模式获取模块52可以在预设的存储模式集合中,迭代选取可容纳该差值数列中各数据的存储模式。即,则针对每一个数据,按照上述存储模式的顺序,依次进行匹配。当第1个数据与某个存储模式的第一个存储子单元匹配(即,该存储子单元能够容纳该数据)时,判断第2个数据是否与该存储模式的第2个存储子单元匹配,如果匹配,则继续进行第3个数据的匹配操作,以此类推,直至该存储模式所有存储子单元均匹配;如果某个数据不匹配,则需要从第1个数据开始,重新与下一个存储模式的第1个存储子单元开始进行匹配,直至找到合适的存储模式为止。
再进一步地,上述存储模块53可以包括:第一存储子模块531、划分子模块532和第二存储子模块533。
其中,第一存储子模块531用于将相匹配的存储模式的模式代码存储于存储单元的第一部分;划分子模块532用于按照相匹配的存储模式,将存储单元的第二部分划分为至少一个存储子单元;第二存储子模块533用于将差值数列中的数据依次存储于存储子单元中。
在本发明实施例中,用于存储差值数列的存储单元由两部分组成,第一部分用于存储匹配的存储模式的模式代码,第二部分用于存储差值数列中的数据。首先,第一存储子模块531将模式获取模块52获取到的相匹配的存储模式所对应的模式代码存储于存储单元的第一部分;然后,划分子模块532根据相匹配的存储模式将存储单元的第二部分划分为至少一个存储子单元,接着,第二存储子模块533将差值数列形成子模块512形成的差值数列中的数据依次存入这些存储子单元中。
本发明实施例提供的数列的压缩装置,通过对有序数列进行差值处理,根据差值序列中各数据的大小,迭代选取可容纳该差值序列的存储模式进行存储,以达到用最小的空间存储数据的目的,从而提高了数列压缩的压缩率,降低了存储空间占用,进而提高数据的读取速度。
实施例六
图7为本发明提供的数列的解压缩装置一个实施例的结构示意图,可用于执行如图4所示的方法步骤。如图7所示,该装置可以包括:第一读取模块71、第二读取模块72和还原模块73。
其中,第一读取模块71用于从存储单元的第一部分读取模式代码,该模式代码与压缩数据的存储模式相对应;第二读取模块72用于根据压缩数据的存储模式,从存储单元的第二部分读取压缩数据;还原模块73用于将读取到的压缩数据与预设数值进行逻辑与操作,以还原数列。
在本发明实施例中,用于存储压缩数据的存储单元由两部分组成,其中,第一部分用于存储模式代码,该模式代码与压缩数据的存储模式相对应。存储单元的第二部分用于存储压缩数据,因此,首先,由第一读取模块71读取的模式代码,然后,第二读取模块72用于根据压缩数据的存储模式,确定数据的存储模式,按照该存储模式的存储规则,依次读取第二部分中的压缩数据。最后,由还原模块73针对第二读取模块72读取到的每一个压缩数据,将与预设数值进行逻辑与操作,以还原数列。具体地,可将第二读取模块72读取到的每一个压缩数据与0xffffffff进行逻辑“与”操作,从而得到压缩前的数据。
本发明实施例提供的数列的解压缩装置,针对有序数列通过差值处理后按照预设存储模式进行存储后的压缩数据,进行解压缩,通过读取存储单元中的模式代码获取数据的存储模式,进而按照存储获取读取压缩数据,并还原出原始有序数列,降低了存储空间占用,提高数据的读取速度。
实施例七
以上描述了数列的压缩装置的内部功能和结构,该装置可实现为一种电子设备。图8为本发明提供的电子设备一个实施例的结构示意图。如图8所示,该电子设备包括存储器81和处理器82。
存储器81,用于存储程序。除上述程序之外,存储器81还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器81可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器82,与存储器81耦合,执行存储器81所存储的程序,以用于:
将有序数列中的数值取差值,得到包含差值数据的差值数列;
在预设的存储模式集合中,获取与差值数列中各数据的大小相匹配的存储模式;
按照相匹配的存储模式,存储差值数列。
进一步,如图8所示,电子设备还可以包括:通信组件83、电源组件84、音频组件85、显示器86等其它组件。图8中仅示意性给出部分组件,并不意味着电子设备只包括图8所示组件。
通信组件83被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件83经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件83还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件84,为电子设备的各种组件提供电力。电源组件84可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件85被配置为输出和/或输入音频信号。例如,音频组件85包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器81或经由通信组件83发送。在一些实施例中,音频组件85还包括一个扬声器,用于输出音频信号。
显示器86包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
实施例八
以上描述了数列的压缩装置的内部功能和结构,该装置可实现为一种电子设备。图9为本发明提供的电子设备另一个实施例的结构示意图。如图9所示,该电子设备包括存储器91和处理器92。
存储器91,用于存储程序。除上述程序之外,存储器91还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器91可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器92,与存储器91耦合,执行存储器91所存储的程序,以用于:
从存储单元的第一部分读取模式代码,该模式代码与压缩数据的存储模式相对应;
根据压缩数据的存储模式,从存储单元的第二部分读取压缩数据;
将读取到的压缩数据与预设数值进行逻辑与操作,以还原数列。
进一步,如图9所示,电子设备还可以包括:通信组件93、电源组件94、音频组件95、显示器96等其它组件。图9中仅示意性给出部分组件,并不意味着电子设备只包括图9所示组件。
通信组件93被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件93经由广播信道接收来自外部广播管理***的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件93还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
电源组件94,为电子设备的各种组件提供电力。电源组件94可以包括电源管理***,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。
音频组件95被配置为输出和/或输入音频信号。例如,音频组件95包括一个麦克风(MIC),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器91或经由通信组件93发送。在一些实施例中,音频组件95还包括一个扬声器,用于输出音频信号。
显示器96包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (12)
1.一种数列的压缩方法,其特征在于,包括:
将有序数列中的数值取差值,得到包含差值数据的差值数列;
在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式,其中,用于存储所述差值数列的存储单元由两部分组成;
将所述相匹配的存储模式的模式代码存储于所述存储单元的第一部分;
按照所述相匹配的存储模式,将所述存储单元的第二部分划分为至少一个存储子单元;
将所述差值数列中的数据依次存储于所述存储子单元中。
2.根据权利要求1所述的数列的压缩方法,其特征在于,所述将有序数列中的数值取差值,得到包含差值数据的差值数列,包括:
在所述有序数列中,以第一个数值为基础,其余数值依次向前取差值,得到所述差值数据;
将所述有序数列的第一个数值与得到的所述差值数据,组成所述差值数列。
3.根据权利要求1或2所述的数列的压缩方法,其特征在于,在所述将有序数列中的数值取差值,得到包含差值数据的差值数列之前,还包括:
对数列中的数值按照从小到大的顺序进行排序,得到所述有序数列。
4.根据权利要求1或2所述的数列的压缩方法,其特征在于,所述在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式,包括:
在所述存储模式集合中,迭代选取可容纳所述差值数列中各数据的存储模式。
5.一种应用于如权利要求1所述的压缩方法的数列的解压缩方法,其特征在于,用于存储压缩数据的存储单元由两部分组成,所述方法包括:
从所述存储单元的第一部分读取模式代码,所述模式代码与所述压缩数据的存储模式相对应;
根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原所述数列。
6.一种数列的压缩装置,其特征在于,包括:
差值数列获取模块,用于将有序数列中的数值取差值,得到包含差值数据的差值数列;
模式获取模块,用于在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式;
存储模块,用于按照所述相匹配的存储模式,存储所述差值数列;
其中,用于存储所述差值数列的存储单元由两部分组成,所述存储模块包括:
第一存储子模块,用于将所述相匹配的存储模式的模式代码存储于所述存储单元的第一部分;
划分子模块,用于按照所述相匹配的存储模式,将所述存储单元的第二部分划分为至少一个存储子单元;
第二存储子模块,用于将所述差值数列中的数据依次存储于所述存储子单元中。
7.根据权利要求6所述的数列的压缩装置,其特征在于,所述差值数列获取模块包括:
差值处理子模块,用于在所述有序数列中,以第一个数值为基础,其余数值依次向前取差值,得到所述差值数据;
差值数列形成子模块,用于将所述有序数列的第一个数值与得到的所述差值数据,组成所述差值数列。
8.根据权利要求6或7所述的数列的压缩装置,其特征在于,还包括:
排序模块,用于对数列中的数值按照从小到大的顺序进行排序,得到所述有序数列。
9.根据权利要求6或7所述的数列的压缩装置,其特征在于,所模式获取模块还用于,在所述存储模式集合中,迭代选取可容纳所述差值数列中各数据的存储模式。
10.一种应用于如权利要求6所述的压缩装置的数列的解压缩装置,其特征在于,用于存储压缩数据的存储单元由两部分组成,所述装置包括:
第一读取模块,用于从所述存储单元的第一部分读取模式代码,所述模式代码与所述压缩数据的存储模式相对应;
第二读取模块,用于根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
还原模块,用于将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原所述数列。
11.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,以用于:
将有序数列中的数值取差值,得到包含差值数据的差值数列;
在预设的存储模式集合中,获取与所述差值数列中各数据的大小相匹配的存储模式,其中,用于存储所述差值数列的存储单元由两部分组成;
将所述相匹配的存储模式的模式代码存储于所述存储单元的第一部分;
按照所述相匹配的存储模式,将所述存储单元的第二部分划分为至少一个存储子单元;
将所述差值数列中的数据依次存储于所述存储子单元中。
12.一种电子设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于运行所述存储器中存储的所述程序,应用于如权利要求1所述的压缩方法,以用于:
从存储单元的第一部分读取模式代码,所述模式代码与压缩数据的存储模式相对应;
根据所述压缩数据的存储模式,从所述存储单元的第二部分读取所述压缩数据;
将读取到的所述压缩数据与预设数值进行逻辑与操作,以还原数列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910100887.4A CN111510153B (zh) | 2019-01-31 | 2019-01-31 | 数列的压缩、解压缩方法和装置以及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910100887.4A CN111510153B (zh) | 2019-01-31 | 2019-01-31 | 数列的压缩、解压缩方法和装置以及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111510153A CN111510153A (zh) | 2020-08-07 |
CN111510153B true CN111510153B (zh) | 2023-05-09 |
Family
ID=71873946
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910100887.4A Active CN111510153B (zh) | 2019-01-31 | 2019-01-31 | 数列的压缩、解压缩方法和装置以及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111510153B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786939A (zh) * | 2005-11-10 | 2006-06-14 | 浙江中控技术有限公司 | 实时数据压缩方法 |
CN102103630A (zh) * | 2010-12-08 | 2011-06-22 | 中国联合网络通信集团有限公司 | 数据压缩方法和装置以及数据解压缩方法和装置 |
CN104901703A (zh) * | 2015-04-08 | 2015-09-09 | 河海大学 | 一种整数序列快速压缩存储算法 |
CN106954075A (zh) * | 2016-01-06 | 2017-07-14 | 睿致科技股份有限公司 | 图像处理装置及其图像压缩方法 |
WO2018051696A1 (ja) * | 2016-09-14 | 2018-03-22 | 株式会社ターボデータラボラトリー | データ圧縮方法、データ圧縮装置、コンピュータプログラム及びデータベースシステム |
CN108052285A (zh) * | 2017-12-12 | 2018-05-18 | 清华大学 | 一种自适应编码长度的时序数据存储的方法和装置 |
-
2019
- 2019-01-31 CN CN201910100887.4A patent/CN111510153B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1786939A (zh) * | 2005-11-10 | 2006-06-14 | 浙江中控技术有限公司 | 实时数据压缩方法 |
CN102103630A (zh) * | 2010-12-08 | 2011-06-22 | 中国联合网络通信集团有限公司 | 数据压缩方法和装置以及数据解压缩方法和装置 |
CN104901703A (zh) * | 2015-04-08 | 2015-09-09 | 河海大学 | 一种整数序列快速压缩存储算法 |
CN106954075A (zh) * | 2016-01-06 | 2017-07-14 | 睿致科技股份有限公司 | 图像处理装置及其图像压缩方法 |
WO2018051696A1 (ja) * | 2016-09-14 | 2018-03-22 | 株式会社ターボデータラボラトリー | データ圧縮方法、データ圧縮装置、コンピュータプログラム及びデータベースシステム |
CN108052285A (zh) * | 2017-12-12 | 2018-05-18 | 清华大学 | 一种自适应编码长度的时序数据存储的方法和装置 |
Non-Patent Citations (1)
Title |
---|
"一种基于文档模式的GML压缩方法";魏勍颋等;《计算机研究与发展》;第48卷(第9期);《计算机研究与发展》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111510153A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20060211444A1 (en) | Mobile communication terminal and communication control method | |
US8824560B2 (en) | Virtual frame buffer system and method | |
JP2008065834A (ja) | フュージョンメモリ装置及び方法 | |
CN106951521B (zh) | 日志文件的读写方法、装置及*** | |
CN108572789B (zh) | 磁盘存储方法和装置、消息推送方法和装置及电子设备 | |
CN107436948B (zh) | 文件搜索方法、装置及终端 | |
CN110874358B (zh) | 多属性列的存储、检索方法和装置以及电子设备 | |
US9244935B2 (en) | Data encoding and processing columnar data | |
CN112532998B (zh) | 抽取视频帧的方法、装置、设备和可读存储介质 | |
CN106528638A (zh) | 删除备份数据的方法及移动终端 | |
CN112784112A (zh) | 报文校验方法及装置 | |
CN111510153B (zh) | 数列的压缩、解压缩方法和装置以及电子设备 | |
CN113542225A (zh) | 一种数据的压缩方法、装置、终端设备及存储介质 | |
KR20090029173A (ko) | Jpeg 어플리케이션의 가변 길이 코드 디코딩 | |
KR20160116980A (ko) | Ldpc 복호기의 vss 알고리즘을 위한 h 행렬의 스케줄링 장치 및 그 방법 | |
CN109388726A (zh) | 一种图片显示方法、装置、设备及计算机可读介质 | |
US8854234B1 (en) | Decompression circuit and associated decompression method | |
CN112612830B (zh) | 一种压缩数据批量导出方法、***及电子设备 | |
CN106874979B (zh) | 一种条形码处理、显示、读取方法和装置 | |
US8112124B2 (en) | Electronic device and method for rapidly displaying pictures | |
KR20180127085A (ko) | 데이터를 압축하는 전자 장치 및 그 동작 방법 | |
CN112486980A (zh) | 数据存储、检索方法和装置、电子设备以及计算机可读存储介质 | |
CN109491620B (zh) | 存储数据重写方法、装置、服务器及存储介质 | |
CN109558387B (zh) | 身份证号的处理方法、装置、存储介质及终端 | |
CN110545107A (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 |