CN100495318C - 整型数据的压缩方法、装置及解压缩方法、装置 - Google Patents
整型数据的压缩方法、装置及解压缩方法、装置 Download PDFInfo
- Publication number
- CN100495318C CN100495318C CNB2007100030172A CN200710003017A CN100495318C CN 100495318 C CN100495318 C CN 100495318C CN B2007100030172 A CNB2007100030172 A CN B2007100030172A CN 200710003017 A CN200710003017 A CN 200710003017A CN 100495318 C CN100495318 C CN 100495318C
- Authority
- CN
- China
- Prior art keywords
- data
- byte
- negative
- integer
- 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.)
- Active
Links
Images
Abstract
本发明提供了一种整型数据的压缩方法和装置,对应于正整数,所述方法包括:获取所需压缩的数据;判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;如果是,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;如果否,则将该数据转换为二进制后,当前X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中。对应于负整数的压缩解压方法与正整数相似。本发明通过符号位的应用,将数据集中预置有数据类型的待压缩数据划分为:能以该类型原所需字节的一半完成存储的数据、和不能以该类型原所需字节的一半完成存储的数据,从而分别进行存储,以实现压缩存储,在增加很少CPU耗费的情况下可以有效降低数据存储空间占用和数据传输带宽占用。
Description
技术领域
本发明涉及数据压缩领域,特别是涉及一种正整型数据(或负整型数据)的压缩方法和装置及解压缩方法、装置。
背景技术
随着信息技术的发展,数据压缩技术也随之产生和发展,用以降低存储空间、提高计算效率或者保证传输安全等等。
现有技术提出了各种各样的数据压缩技术方案:
中国专利第200310124221.1号专利文件公开了一种2字节字符数据的压缩方法,包括:根据频率数生成多个可压缩代码字,存储在基本词典表中,将登记的表示下一个代码字的变量初始化的步骤;识别输入的信息数据是否是2字节字符,并接收的输入步骤;比较输入的数据是否包含在该可压缩代码字中,当包含在该可压缩的代码字中时,从该词典表中经过映射过程搜索符合代码并输出,当词典中没有该符合代码时,将其登记在词典中的步骤;判断是否是数据的尾数,当数据没有输入完时,返回依次输入信息数据的输入步骤;以及当是数据的尾数时,进行清除过程的步骤,当编码该可压缩代码字得到的符合代码的位数比该可压缩代码字可以降低位的临界值小时,以log2(C1+1)-1位输出,当符合代码字比临界值大时,以log2(C1+1)位输出,该C1是当前被赋值的代码字数。其核心为提供一种在终端机的信息处理模块中,以2字节字符(朝鲜字符、汉语)为单位对信息进行压缩后再存储,从而可以减少存储空间的2字节字符数据的压缩方法,从而可以减少移动终端中的SMS(Short MessageService)和EMS(Enhanced Message Service)的信息存储空间。
中国专利第98104355.0号专利文件公开了一种字母压缩方法,其特点是:用以储存一字母在一特定位及一存储单元中,其是利用编码的方法,将二十六个英文字母的符号集合,切为一半,分别编以头码及尾码,头码则存在该特定位,尾码则存在该存储单元,以减小存储空间,再配合数据结构的特殊设计,十六个字母则可存在十个字节内。由此能将二十六个英文字母以等效为五位编码的方式,有效减小存储空间,使较小的存储空间可储存较多的电话识别码。
再例如,网络上邮件传输常用用于传输8Bit字节代码的编码方式——Base64,Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8=4*6=24),然后把6Bit再添两位高位0,组成四个8Bit的字节,从而可以满足信息加密以及编解码速度的需要,但是从上述原理可以看出,转换后的字符串理论上将要比原来的长1/3。
也就是说现有技术中,根据数据属性的不同、压缩目的的不同,存在各种不同的压缩方法。
而对于应用广泛的整型数据(例如,数据库应用和各种编程应用),现有技术一般采用以下方式进行存储和传输:
首先定义该字段(变量或者纬度)的数据类型是普通整型数据还是长整型数据,然后分别赋予相应的4字节或者8字节存储空间,以二进制文件的格式存储在磁盘文件中。众所周知,数据类型的设置,是以该字段(变量或者纬度)可能输入的最大数为依据的,例如,某个字段中99%都属于普通整型数据,只有1%属于长整型数据,则该字段仍需要设置为长整型数据,每个数据占用8字节存储空间。
从上述整型数据的存储过程可以看出,现有技术无论数值大小,都需要占用相同的字节空间,形成了存储空间的资源浪费,尤其对于某些特殊情况下,大量使用整型数据的情况下,上述的资源浪费的缺陷就会非常突出,例如,在企业信息管理系统的数据库中会存储大约百万数量级以上的正整型数据,包括:所存储的单元格行、列的数值,员工的年龄、工龄,存货件数、正整数递增编码等等。
总之,需要本领域技术人员迫切解决的一个技术问题就是:如何能够降低上述情形下的存储资源浪费。
发明内容
本发明所要解决的技术问题是提供一种正整型(或负整型)数据的压缩方法和装置,能够非常简单的对正整数(或负整数)进行压缩存储,在增加很少CPU耗费的情况下有效降低数据存储空间占用和数据传输带宽占用。
相应的,本发明还提供了针对上述压缩得到的压缩数据,进行解压缩的方法和装置。
为了解决上述问题,本发明公开了一种正整型数据的压缩方法,包括以下步骤:
获取所需压缩的数据;所需压缩的数据为正整型数据;
判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
如果是,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;
如果否,则将该数据转换为二进制后,X个字节的首X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
其中,当预先设置的数据类型为短整型数据时,所述数值X为2;当预先设置的数据类型为普通整型数据时,所述数值X为4;当预先设置的数据类型为长整型数据时,所述数值X为8。
本发明还公开了一种负整型数据的压缩方法,包括:
获取所需压缩的数据;所需压缩的数据为负整型数据;
判断该数据是否大于等于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
如果是,则将该数据转换为二进制后,以负数形式存储至X/2个字节中;
如果否,则将该数据转换为二进制后,X个字节的首X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
本发明还提供了一种正整型数据的压缩装置,包括:
接口模块,用于获取所需压缩的数据;所需压缩的数据为正整型数据;
判别模块,用于判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,X个字节的首X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
其中,当预先设置的数据类型为短整型数据时,所述数值X为2;当预先设置的数据类型为普通整型数据时,所述数值X为4;当预先设置的数据类型为长整型数据时,所述数值X为8。
本发明还公开了一种负整型数据的压缩装置,包括:
接口模块,用于获取所需压缩的数据;所需压缩的数据为负整型数据;
判别模块,用于判断该数据是否大于等于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以负数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,X个字节的首X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
本发明还提供了一种应用本发明对正整型数据压缩后的结果进行解压缩的方法,包括:
读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
判断所读取的数据的正负;
如果为正,则输出该正整数;
如果为负,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
其中,当预先设置的数据类型为短整型数据时,所述数值X为2;当预先设置的数据类型为普通整型数据时,所述数值X为4;当预先设置的数据类型为长整型数据时,所述数值X为8。
本发明还提供了一种应用本发明对负整型数据压缩后的结果进行解压缩的方法,包括:
读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
判断所读取的数据的正负;
如果为负,则输出该负整数;
如果为正,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
本发明还提供了一种应用本发明对正整型数据压缩后的结果进行解压缩的装置,包括:
读取模块,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
判别模块,用于判断所读取的数据的正负;
输出模块,用于:
当所读取的数据为正时,则输出该正整数;
当所读取的数据为负时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
本发明还要求保护一种应用本发明对负整型数据压缩后的结果进行解压缩的装置,包括:
读取模块,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
判别模块,用于判断所读取的数据的正负;
输出模块,用于:
当所读取的数据为负时,则输出该负整数;
当所读取的数据为正时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
与现有技术相比,本发明具有以下优点:
本发明的核心在于,首先对本发明所应用的数据环境以及现有的数据存储方法进行分析,当一个数据集中所需压缩存储(或传输)的数据都是正整数、或者都是负整数时(即按照通常存储方法,符号位都是一致的),存储字节中的符号位就不太重要了,本发明就是利用符号位的变化,在兼顾现有数据类型划分的基础上,实现对整型数据的压缩存储。
本发明通过符号位的应用,将数据集(例如,变量、字段或者纬度)中预置有数据类型(例如,短整型、普通整型或者长整型)的待压缩数据划分为:能以该类型原所需字节的一半完成存储的数据、和不能以该类型原所需字节的一半完成存储的数据,从而分别进行存储,以非常简单的方式对整型数据进行压缩存储,在增加很少CPU耗费的情况下可以有效降低数据存储空间占用和数据传输带宽占用。
本发明尤其适用于很多企业信息管理系统中,数据库中存储有海量的正整型数据,需要进行压缩存储,降低数据存储空间;并且由于这些管理系统拥有很多的客户端,而海量的信息数据一般都存储在服务器端,二者之间需要频繁的数据传输,应用本发明,可以非常有效的降低上述正整型数据在传输中的带宽占用,提高传输效率。从实际应用的测试情况来看,应用本发明,可以节约25%-50%的存储空间。
附图说明
图1是一种正整型数据的压缩方法步骤流程图;
图2是针对根据图1所示流程得到的压缩数据的解压缩过程的步骤流程图;
图3a和图3b是在字节中存储二进制数的示意图;
图4是一种正整型数据的压缩装置的结构框图;
图5是与图4相应的解压缩装置的结构框图;
图6是一种负整型数据的压缩方法的步骤流程图;
图7是针对图6所示流程得到的压缩数据的解压缩过程的步骤流程图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明一种正整型数据的压缩方法步骤流程图,具体包括以下步骤:
步骤101、获取所需压缩的数据;所需压缩的数据均为正整型数据;例如,所存储的单元格行、列的数值,员工的年龄、工龄,存货件数、正整数递增编码等等。
步骤102、判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;如果是,则转入步骤103;如果否,则转入步骤104;
即应用图1所示的步骤流程时,需要确定待压缩数据均为正整型数据,并且需要获悉待压缩数据的类型(例如,短整型、普通整型或者长整型等等)。当然,对于随机出现的单个数据而言,比较难以确定其数据类型,因而应用本发明难以达到优选效果;但对于一个数据集而言(例如,变量、字段或者纬度等等),一般都会预先设置数据类型,当应用本发明对一个数据集内的数据进行压缩存储、传输时,可以达到非常好的效果。
步骤103、将该数据转换为二进制后,以正数形式存储至X/2个字节中;
步骤104、将该数据转换为二进制后,当前X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中。
例如,当某个字段预先设置的数据类型为短整型数据时,所述数值X为2,即通常情况下,存储该字段的数据都需要2个字节,但是应用本发明后,对于能够采用1个字节完成存储的(待压缩数据小于2的7次方、128时),只需要存储在一个字节中即可,无需像现有技术那样,仍需要存储成两个字节,空余部分采用“0”代替,从而可以大大节约存储空间,并且基本不会增加CPU的处理压力。
同理,当某个字段预先设置的数据类型为普通整型数据时,所述数值X为4;当待压缩数据小于2的15次方(32768)时,只需存储在两个字节中即可,符号位采用“0”表示即可;当待要所数据不小于(大于或者等于)2的15次方(32768)时,首两个字节以负数形式存储,后续再追加存储两个字节,符号位采用“1”表示即可。
同理,当某个字段预先设置的数据类型为长整型数据时,所述数值X为8;当待压缩数据小于2的31次方(2147483648)时,只需存储在4个字节中即可,符号位采用“0”表示即可;当待要所数据不小于(大于或者等于)2的31次方(2147483648)时,首两个字节以负数形式存储,后续再追加存储两个字节,符号位采用“1”表示即可。
所述符号位一般为所述X/2个字节的首个二进制位(最高位),一个字节包括8个二进制位;由于数据在计算机中的存储都需要先转换为二进制数之后进行存储,所以一般选取首个二进制位作为符号位。一般情况下,符号位采用0表示正,1表示负;当然,如果在某些特殊情况下,需要选用符号位采用1表示正,0表示负,对于本发明而言,是完全可以接受的,没有任何影响。
上面详细描述了本发明针对待压缩数据均为正整型数据时,如何实现压缩的步骤流程,下面详细描述如何对根据上述流程压缩后的数据进行解压缩。
参照图2,示出了针对根据图1所示流程得到的压缩数据的解压缩过程的步骤流程图,具体包括以下步骤:
步骤201、读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
步骤202、判断所读取的数据的正负;如果为正,则执行步骤203;如果为负,则执行步骤204;
步骤203、输出该正整数;
步骤204、追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
所述判断所读取的数据为正(负),通过判断所读取的X/2个字节的首个二进制位为0(1)即可获知;由于负数的二进制一般采用补码表示,所以所述取正需要符号取反操作即i=-i。
例如,待压缩的一组数据为普通整型数据,其中包括32755和327550两个正整数,由该组数据的类型——普通整型数据,可以获知X=4,即通常情况下,需要辟出4个字节用来存储各个数据。应用本发明进行压缩存储的流程如下:
对于32755,判断后,知悉其小于32768,转换为二进制数为111111111110011,所以存储至两个字节(参照图3a),图3a中的标记301表示一个字节,每个字节包括8个二进制位;首个二进制位302为符号位,0表示该数据为正。
对于327550,判断后,知悉其大于32768,转换为二进制数为1001111111101111110,所以首两个字节以补码负数形式“1111111111111100”存储“0000000000000100”部分,剩余部分“1111111101111110”存储至后续两个字节中(参照图3b),图3b中前两个字节用303标记,后续两个字节用304标记;前两个字节303的首个二进制位302为符号位,1表示该数据为负。
当读取数据时,由该组数据的类型——普通整型数据,可以获知X=4,即首先读取2个字节的数据,判断后再确定继续读取还是直接输出。
例如,首先读取的2个字节的数据为:0111111111110011(参照图3a),从符号位0可以判断得出为正,则认为这2个字节所存储的是一个完整的数据,所以直接输出十进制数32755即可。
如果首先读取的2个字节的数据为:1111111111111100,从符号位1可以判断得出为负,则认为这2个字节所存储的是一个不完整的数据,所以需要追加读取后续2个字节的数据:1111111101111110,与前2个字节的数据取正移位后合并为一个4字节的正整数:
1111111111111100取正为:0000000000000100,与后两字节合并为:
00000000 00000100 11111111 01111110,还原为十进制正整数则得到327550,输出即可。
从上述过程就可以看出,对于数据32755的存储过程,节约了2个字节的存储空间,并从整个存储、读取过程来看,并没有增加过多的CPU处理压力。
参照图4,示出了一种正整型数据的压缩装置的结构框图,具体包括以下部件:
接口模块401,用于获取所需压缩的数据;
数值判别模块402,用于判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块403,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,当前X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中。
一般情况下,当预先设置的数据类型为短整型数据时,所述数值X为2;当预先设置的数据类型为普通整型数据时,所述数值X为4;当预先设置的数据类型为长整型数据时,所述数值X为8。其中,所述正数形式为:以原码方式存储至所述X/2个字节中,首个二进制位为0;所述负数形式为:以补码方式存储至所述X/2个字节中,首个二进制位为1。
参照图5、示出了与图4相应的解压缩装置的结构框图,具体包括:
读取模块501,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
符号位判别模块502,用于判断所读取的数据的正负;
输出模块503,用于:
当所读取的数据为正时,则输出该正整数;
当所读取的数据为负时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
其中,一般情况下,所述正数形式为:所读取的X/2个字节的首个二进制位为0;所述负数形式为:所读取的X/2个字节的首个二进制位为1。
从本发明的核心可以知悉,本发明并不限于仅仅应用在正整型数据的压缩存储、传输中,只要保证待压缩数据的符号位都是统一的就可以了,即本发明也可以用于负整型数据的压缩存储。
参照图6,示出了本发明一种负整型数据的压缩方法的步骤流程图,具体包括以下步骤:
步骤601、获取所需压缩的数据;
步骤602、判断该数据是否大于等于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;如果是,则执行步骤603,如果否,则执行步骤604;
步骤603、将该数据转换为二进制后,以负数形式存储至X/2个字节中;
步骤604、将该数据转换为二进制后,当前X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中。
相应的,将上述压缩方法对应至虚拟装置,可以包括以下部件:
接口模块,用于获取所需压缩的数据;
判别模块,用于判断该数据是否大于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以负数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,当前X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中。
参照图7,示出了针对图6所示流程得到的压缩数据的解压缩过程的步骤流程图,具体包括以下步骤:
步骤701、读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
步骤702、判断所读取的数据的正负;如果为负,则执行步骤703,如果为正,则执行步骤704;
步骤703、输出该负整数;
步骤704、追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
相应的,将上述解压缩方法对应至虚拟装置,可以包括以下部件:
读取模块,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
判别模块,用于判断所读取的数据的正负;
输出模块,用于:
当所读取的数据为负时,则输出该负整数;
当所读取的数据为正时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
由于正整型数据和负整型数据的压缩、解压缩过程比较相似,所以针对图6、图7的描述较为简略,未详尽之处可以参见本说明书前面相应部分的描述。
以上对本发明所提供的一种正整型数据的压缩方法和装置、解压缩方法和装置,以及一种负整型数据的压缩方法和装置、解压缩方法和装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (11)
1、一种正整型数据的压缩方法,其特征在于,包括:
获取所需压缩的数据;所需压缩的数据为正整型数据;
判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
如果是,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;
如果否,则将该数据转换为二进制后,X个字节的首X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
2、如权利要求1所述的方法,其特征在于:
当预先设置的数据类型为短整型数据时,所述数值X为2;
当预先设置的数据类型为普通整型数据时,所述数值X为4;
当预先设置的数据类型为长整型数据时,所述数值X为8。
3、一种负整型数据的压缩方法,其特征在于,包括:
获取所需压缩的数据;所需压缩的数据为负整型数据;
判断该数据是否大于等于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
如果是,则将该数据转换为二进制后,以负数形式存储至X/2个字节中;
如果否,则将该数据转换为二进制后,X个字节的首X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
4、一种正整型数据的压缩装置,其特征在于,包括:
接口模块,用于获取所需压缩的数据;所需压缩的数据为正整型数据;
判别模块,用于判断该数据是否小于2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以正数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,X个字节的首X/2个字节以负数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
5、如权利要求4所述的装置,其特征在于:
当预先设置的数据类型为短整型数据时,所述数值X为2;
当预先设置的数据类型为普通整型数据时,所述数值X为4;
当预先设置的数据类型为长整型数据时,所述数值X为8。
6、一种负整型数据的压缩装置,其特征在于,包括:
接口模块,用于获取所需压缩的数据;所需压缩的数据为负整型数据;
判别模块,用于判断该数据是否大于等于负的2的(4X-1)次方,所述数值X由预先设置的待压缩数据的类型获得;
存储模块,用于:
当所述判别模块的输出结果为“是”,则将该数据转换为二进制后,以负数形式存储至X/2个字节中;
当所述判别模块的输出结果为“否”,则将该数据转换为二进制后,X个字节的首X/2个字节以正数形式存储,剩余部分存储在后续的X/2个字节中;
其中,所述正数形式为正整数的原码方式,符号位为0;所述负数形式为负整数的补码方式,符号位为1。
7、一种针对根据权利要求1所述方法得到的压缩数据进行解压缩的方法,其特征在于,包括:
读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
判断所读取的数据的正负;
如果为正,则输出该正整数;
如果为负,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
8、如权利要求7所述的方法,其特征在于,
当预先设置的数据类型为短整型数据时,所述数值X为2;
当预先设置的数据类型为普通整型数据时,所述数值X为4;
当预先设置的数据类型为长整型数据时,所述数值X为8。
9、一种针对根据权利要求3所述方法得到的压缩数据进行解压缩的方法,其特征在于,包括:
读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
判断所读取的数据的正负;
如果为负,则输出该负整数;
如果为正,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
10、一种针对根据权利要求1所述方法得到的压缩数据进行解压缩的装置,其特征在于,包括:
读取模块,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为正整型数据;
判别模块,用于判断所读取的数据的正负;
输出模块,用于:
当所读取的数据为正时,则输出该正整数;
当所读取的数据为负时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取正移位后合并为一个正整数,并输出。
11、一种针对根据权利要求3所述方法得到的压缩数据进行解压缩的装置,其特征在于,包括:
读取模块,用于读取X/2个字节的数据,所述数值X由预先设置的待解压缩数据的类型获得,所述待解压缩数据为负整型数据;
判别模块,用于判断所读取的数据的正负;
输出模块,用于:
当所读取的数据为负时,则输出该负整数;
当所读取的数据为正时,则追加读取后续X/2个字节的数据,与前X/2个字节的数据取负移位后合并为一个负整数,并输出。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100030172A CN100495318C (zh) | 2007-01-30 | 2007-01-30 | 整型数据的压缩方法、装置及解压缩方法、装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2007100030172A CN100495318C (zh) | 2007-01-30 | 2007-01-30 | 整型数据的压缩方法、装置及解压缩方法、装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101008890A CN101008890A (zh) | 2007-08-01 |
CN100495318C true CN100495318C (zh) | 2009-06-03 |
Family
ID=38697334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2007100030172A Active CN100495318C (zh) | 2007-01-30 | 2007-01-30 | 整型数据的压缩方法、装置及解压缩方法、装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100495318C (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102445707A (zh) * | 2010-10-04 | 2012-05-09 | 王子影 | 一种地震前兆数据压缩存储与解压缩技术 |
CN102457283B (zh) * | 2010-10-28 | 2015-10-14 | 阿里巴巴集团控股有限公司 | 一种数据压缩、解压缩方法及设备 |
CN102122240B (zh) * | 2011-01-20 | 2013-04-17 | 东莞市泰斗微电子科技有限公司 | 一种数据类型转换电路 |
CN102314697B (zh) * | 2011-07-20 | 2013-04-10 | 张行清 | 基于数据类型的数值型数据压缩及解压缩方法 |
CN104378118B (zh) * | 2014-10-29 | 2017-08-11 | 中国科学院地质与地球物理研究所 | 高效自适应地震数据流无损压缩及解压缩方法 |
WO2018020299A1 (en) * | 2016-07-29 | 2018-02-01 | Chan Kam Fu | Lossless compression and decompression methods |
CN106549673B (zh) * | 2016-10-27 | 2020-02-21 | 深圳市金证科技股份有限公司 | 一种数据压缩方法及装置 |
CN106681968A (zh) * | 2016-12-21 | 2017-05-17 | 桂林力港网络科技股份有限公司 | 一种批量数值型数据的传输方法、接收终端及发送终端 |
CN108197885A (zh) * | 2017-11-27 | 2018-06-22 | 泰康保险集团股份有限公司 | 员工的考勤方法和装置 |
CN109995373B (zh) * | 2018-01-03 | 2023-08-15 | 上海艾拉比智能科技有限公司 | 一种整数数组的混合打包压缩方法 |
WO2020215314A1 (zh) * | 2019-04-26 | 2020-10-29 | 云图有限公司 | 一种布尔电路编码方法、装置及系统 |
CN110120819B (zh) * | 2019-04-26 | 2023-07-21 | 矩阵元技术(深圳)有限公司 | 一种布尔电路编码方法、装置及系统 |
CN111371461B (zh) * | 2020-04-26 | 2023-04-07 | 宁夏隆基宁光仪表股份有限公司 | 一种适用于智能电表的原码与反码混合式数据压缩方法 |
CN111651404A (zh) * | 2020-04-26 | 2020-09-11 | 浙江吉利汽车研究院有限公司 | 传感器数据存储、读取方法及数据存储、读取装置 |
CN112003624B (zh) * | 2020-08-05 | 2024-01-26 | 北京有生志广科技有限公司 | 无线电监测数据无损压缩与在线解压缩方法、装置 |
CN112463706A (zh) * | 2020-12-07 | 2021-03-09 | 上海电气集团股份有限公司 | 一种数据发送、接收方法及通信终端 |
CN112527754A (zh) * | 2020-12-23 | 2021-03-19 | 山东鲁能软件技术有限公司 | 基于按位变长存储的数值型数据压缩方法及系统 |
CN112699639B (zh) * | 2021-02-09 | 2022-03-04 | 北京微步在线科技有限公司 | 整数数据的存储方法、装置及存储介质 |
-
2007
- 2007-01-30 CN CNB2007100030172A patent/CN100495318C/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101008890A (zh) | 2007-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100495318C (zh) | 整型数据的压缩方法、装置及解压缩方法、装置 | |
CN109120272B (zh) | 一种面向离散制造车间的rfid标签数据压缩方法 | |
US9223765B1 (en) | Encoding and decoding data using context model grouping | |
AU2017342863B2 (en) | Methods and devices for encoding and decoding binary data | |
CN101350858B (zh) | 一种短信解码的方法和用户终端 | |
CN111539502B (zh) | 防伪二维码的生成方法、装置、服务器及存储介质 | |
CN103839148A (zh) | 快递识别分拣系统及方法 | |
CN101729075A (zh) | 一种数据压缩、解压缩的方法和装置 | |
US11070231B2 (en) | Reducing storage of blockchain metadata via dictionary-style compression | |
CN104850619A (zh) | 单据编码生成的方法和装置 | |
CN109271797B (zh) | 一种提高数据库敏感信息安全性的方法及系统 | |
US9143163B2 (en) | Method and system for text compression and decompression | |
US9235610B2 (en) | Short string compression | |
Jacob et al. | Comparative analysis of lossless text compression techniques | |
CN102891730B (zh) | 基于bcd码卫星短报文的编码方法和装置 | |
CN115510811A (zh) | 一种字符串编码、解码方法及编码装置和解码装置 | |
CN112016270A (zh) | 汉信码的物流信息编码方法、装置及设备 | |
Kaur et al. | Lossless text data compression using modified Huffman Coding-A review | |
CN111866520A (zh) | 编解码方法、编解码设备以及通信系统 | |
Rani et al. | A survey on lossless text data compression techniques | |
CN103488618A (zh) | 文本信息传送方法及系统、文本信息显示方法及系统 | |
CN103379457A (zh) | 文字编码与解码系统及方法 | |
CN109660262A (zh) | 一种应用于电子邮箱地址的字符编码方法及系统 | |
Bhanarkar et al. | SMS Text Compression through IDBE (Intelligent Dictionary based Encoding) for Effective Mobile Storage Utilization | |
CN113283215B (zh) | 一种基于utf-32编码的数据混淆方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |