文本数据压缩、解压方法及装置的制造方法
【专利摘要】本申请公开了一种文本数据压缩方法,包括:提取数据包内的字符;依据所述字符的标准编码,通过特定方式得到该字符对应的自定义编码,所述自定义编码所编码的位Bit数小于所述标准编码所编码的Bit数;将所述自定义编码有用的低位Bit值压缩至一定字节空间内,其中,所述一定字节空间少于所述字符的标准编码占用的字节空间。本申请通过对少量的字符进行自定义编码,将自定义编码Bit值压缩至较少字节内,解决了现有技术中文本数据传输量过大、传输效率低的问题。本申请还公开了一种文本数据解压方法、一种文本数据压缩装置、一种文本数据解压装置。
【专利说明】
文本数据压缩、解压方法及装置
技术领域
[0001] 本申请涉及计算机技术领域,尤其涉及一种文本数据压缩、解压方法及装置。
【背景技术】
[0002] 当前,字符编码有多种标准,如采用8位编码255个字符的美国信息交换标准代 码(American Standard Code for Information Interchange,ASCII)、及为解决容量不 够问题而米用 16 位标准的统一码(Universal Multiple-Octet Coded Character Set, Unicode,UCS)等。当一个字符占用的位数越多,表示占用的存储量越大,在文件传输过程 中也需要占用更多的带宽、话费更多的传输时间。
[0003] 在某些应用场景下,如海量数据请求的RPC远程服务调用过程中,网络传输数据 包未进行压缩,在高并发、大数据量的场景下,数据传输量过大,占用过多网络带宽,服务器 处理时效过长,性能不理想,吞吐量低。
【发明内容】
[0004] 本申请实施例提供一种文本数据压缩方法,用以解决现有技术中文本数据传输量 过大、传输效率低的问题。
[0005] 本申请实施例提供一种文本数据解压方法,用以解决现有技术中文本数据传输量 过大、传输效率低的问题。
[0006] 本申请实施例提供一种文本数据压缩装置,用以解决现有技术中文本数据传输量 过大、传输效率低的问题。
[0007] 本申请实施例提供一种文本数据解压装置,用以解决现有技术中文本数据传输量 过大、传输效率低的问题。
[0008] 本申请实施例采用下述技术方案:
[0009] 一种文本数据压缩方法,包括:
[0010] 提取数据包内的字符,其中,所述字符占用确定的字节数;
[0011] 依据所述字符的标准编码,通过特定方式得到该字符对应的自定义编码,所述自 定义编码所编码的位Bit数小于所述标准编码所编码的Bit数;
[0012] 将所述自定义编码有用的低位Bit值压缩至一定字节空间内,其中,所述一定字 节空间少于所述字符的标准编码占用的字节空间。
[0013] -种文本数据解压方法,包括:
[0014] 依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义编码;
[0015] 依据所述字符的自定义编码通过特定方式获得该字符对应的标准编码,其中,所 述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数。
[0016] -种文本数据压缩装置,包括:
[0017] 提取单元,用于提取数据包内的字符,其中,所述字符占用确定的字节数;
[0018] 转换单元,用于依据所述字符的标准编码,通过特定方式得到该字符对应的自定 义编码,所述自定义编码所编码的位Bit数小于所述标准编码所编码的Bit数;
[0019] 压缩单元,用于将所述自定义编码有用的低位Bit值压缩至一定字节空间内,其 中,所述一定字节空间少于所述字符的标准编码占用的字节空间。
[0020] 一种文本数据解压装置,包括:
[0021] 解压单元,用于依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义 编码;
[0022] 转换单元,用于依据所述字符的自定义编码通过特定方式获得该字符对应的标准 编码,其中,所述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数。
[0023] 本申请实施例提供的上述至少一个方案可以达到下述技术效果:
[0024] 通过对较少数量的文本字符数据进行自定义编码,采用特定方式在标准编码与自 定义编码之间进行转换,压缩表示字符自定义编码有用的低位Bit值至较少的字节空间 内,解决了现有技术中文本数据传输量过大、传输效率低的问题。
【附图说明】
[0025] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0026] 图1为本申请实施例一提供的文本数据压缩方法流程图;
[0027] 图2为本申请实施例二提供的文本数据解压方法流程图;
[0028] 图3为本申请实施例三提供的文本数据压缩装置结构示意图;
[0029] 图4为本申请实施例四提供的文本数据解压装置结构示意图;
[0030] 图5为本申请实施例五提供的基于TCP协议的RPC网络通信中的文本数据压缩、 解压方法。
【具体实施方式】
[0031] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及 相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一 部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做 出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0032] 实施例1
[0033] 图1为本申请实施例一提供的文本数据压缩方法流程,主要是指重新为数据包 内涉及的0-9、A-Z、a-z共62个字符进行自定义编码并形成对应美国信息交换标准代码 (American Standard Code for Information Interchange,ASCII)的字典表,再经提取自 定义编码一个字节内有用的低位(Binary Digit,Bit)值压缩至更少的字节空间,具体包括 以下步骤:
[0034] S101 :提取数据包内的字符。
[0035] ASCII编码字符的数量超过了 128,在二进制中需要占用8个Bit值来进行编码, 且最多可编码256个字符。在某些特定应用场景下,需要编码的字符数量少于128个或者 更少,如在一些RPC调用场景下,需要编码的字符仅仅涉及到0-9、A-Z、a-z共62个字符。 而本步骤所述数据包中则指这种只涉及62个字符的情况,在编码过程中只需从0编码至61 即可,而在二进制中6个Bit值可以编码64个字符。
[0036] 所以本步骤涉及的62个字符只需占用六位Bit值即可完成编码,然后通过提取有 用的六位Bit值并压缩至更少的字节空间内来进行压缩。如ASCII编码中占用四个字节的 四个字符转换为自定义编码后,再提取表示四个字符的自定义编码的低六位Bit值压缩至 三个字节内。
[0037] 本步骤具体是提取数据包内采用ASCII编码的四个字符分为一组的方式进行,且 每个字符占用一个字节,如将数据包内的字符集"HelloWorldOl"每次提取四个字符并进行 如下表1所示的分组。本处分组仅是逻辑上的分组概念,在计算机执行层面所述分组不是 必要的。
[0038]
[0039] 表 1
[0040] 数据包的压缩主要是针对需要进行传输发送的数据包进行压缩,在数据包发送端 进行操作。如针对海量数据请求的RPC远程服务调用,在被请求的服务器端对需要发送给 请求方的数据包进行压缩。本案应用不限于海量数据请求的RPC远程服务调用,适用于所 有传输0-9、A-Z、a-z的数据包应用场景。
[0041] S102 :依据所述字符的标准编码,通过特定方式得到该字符对应的自定义编码。
[0042] 此实施例所指标准编码为ASCII编码,所述自定义编码为本实施例涉及的62个字 符的对应的0-61的编码,所述自定义编码在二进制表示时,限于计算机存储单位的限制, 一个字符对应的自定义编码仍然需要占用一个字节,而该一个字符对应的自定义编码占用 的一个字节中只有低六位Bit值有效,高两位Bit值为多余空间。所以所述自定义编码所 编码的位Bit数小于所述标准编码所编码的Bit数。
[0043] 所述特定方式可以是一种算法,通过该算法将所述字符对应的ASCII编码换算成 该字符对应的自定义编码。
[0044] 所述特定方式还可以通过ASCII编码与自定义编码之间的映射关系表来实现,具 体来说,是通过查找字典表的方式来实现转换。如表2所示的字典表,建立了 0-9、A-Z、a-z 共62个字符的自定义编码对应的ASCII编码之间的映射的关系,包括表示ASCII编码的 Bit值、表示自定义编码的Bit值。为了便于理解,在所述字典表上对应每个字符列出的一 个十进制索引号,所述索引号在字典表中实质上是不存在的。
[0045]
[0047] 表 2
[0048] 然后依据所述分组后字符的ASCII编码Bit值在所述字典表中得到该字符对应的 自定义编码Bit值。依据表1所述的分组Group-Ι为例,得到如表3所示的字符对应的自 定义编码Bit值。
[0049]
[0050] 表 3
[0051] S103 :将所述自定义编码有用的低位Bit值压缩至一定字节空间内。
[0052] 因为字符0-9、A-Z、a_z的自定义编码只需占用六个Bit值就能完成编码,一个字 节表示的字符的自定义编码的高两位均无需用到,所以将有用的低六位Bit值压缩存储至 更少的字节空间内。
[0053] 本步骤具体是指保留分组中原4个字节的低六位Bit值并存储至3个字节内,可 以采用移位方式、或者转移方式进行压缩:
[0054] -、移位原则:自分组内第二个字节开始向右位移的2*(n_l)位,所述η表示分组 内的存储4个字符的字节序号,如表示第一个字符的字节为1、表示第二个字符的字节为2、 表示第三个字符的字节为3、表示第四个字符的字节为4。所以在移位操作时,第一个字节 的Bit值无需变动;第二个字节Bit值向右移动两位,同时第二个字节的低两位Bit值覆盖 第一个字节Bit值的高两位;第三个字节Bit值向右移动四位,同时第三个字节Bit值的低 两位覆盖所述第二字节Bit值的高两位;所述第四个字节Bit值向右移动六位,同时,第四 个字节Bit值的低两位覆盖第三个字节Bit值的高两位;放弃第四个字节Bit值的高两位。 完成将所述4个字节的容量压缩至3个字节内。
[0055] 二、转移原则:开辟一个占有3个字节的新分组,将原分组内的4个字节的低六位 分别依次复制到新分组的3个字节内,并丢弃原分组。
[0056] 所述分组Group-Ι经过压缩操作后,如下表4所示:
[0057]
[0058] 表 4
[0059] S104 :发送压缩后的数据包。
[0060] 经过S103的压缩操作后,原本一组4个字符需要4个字节的容量被压缩至只需要 3个字节的容量,在本步骤的数据传输中减少了 25%的数据传输量,提高了请求传输效率。
[0061] 需要说明的是,所述分组是为便于说明进行的逻辑上的分组,在计算机层面执行 时,仅需将数据包内的字符依次提出并转换成对应自定义编码,再将所述字符自定义编码 的低六位Bit值依次存储至新的字节空间内即可。
[0062] 实施例2
[0063] 图2为本申请实施例二提供的文本数据解压方法流程,主要是指将经过实施例一 压缩后的文本数据进行解压处理,包括如下步骤:
[0064] S201 :接收压缩数据包。
[0065] 本步骤接收的压缩数据包是指经过实施例一压缩后的数据包。数据包的解压主要 是指针对接收到压缩后的数据包进行解压缩处理,在数据包接收端进行操作,如在网页端、 智能终端等。
[0066] S202 :依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义编码。
[0067] 所述表示一个字符的Bit值是指表示一个字符的自定义编码的六位Bit值。所述 压缩数据包内的字符是经过实施例一压缩并分组的,每组包括4个字符数据并占用3个字 节容量。本步骤是指将所述压缩成3个字节的4个字符还原成之前每个字符占用一个字节 的自定义编码。
[0068] 具体是依次将数据包内每六位Bit值提取出来作为表示一个字符自定义编码的 低六位复原字符对应的自定义编码。具体解压缩原则可采用如下方式之一:
[0069] -、移位方式:与实施例一中的移位原则相反,采用相反的向左移位的方式进行, 在所述分组原则下最终将所述3个字节复原成4个字节。在此,详细原则不再赘述。
[0070] 二、转移原则:首先开辟一个新字节空间,该字节的高两位均设为零;再依次数据 包内表示每个字符的六位Bit值至所述新开辟的字节空间的低六位上。这样就完成了压缩 数据包到自定义编码的解压过程。
[0071] 同样依据所述分组Group-Ι经过解压缩操作后,如下表5所示:
[0072]
[0073] 表 5
[0074] S203依据所述字符的自定义编码通过特定方式获得该字符对应的标准编码。
[0075] 所述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数。此处的所述 标准编码为ASCII编码。
[0076] 所述特定方式可以是一种算法,通过该算法将所述字符对应的自定义编码换算成 该字符对应的ASCII编码。
[0077] 所述特定方式还可以通过ASCII编码与自定义编码之间的映射关系表来实现,具 体来说,是通过查找字典表的方式来实现转换。如实施例一中表2所示的字典表,是指将 0-9、A-Z、a-z共62个字符进行重新自定义编码,并与字符0-9、A-Z、a-z的ASCII编码建立 映射的关系表,包括表示ASCII编码的Bit值、表示自定义编码的Bit值。为了便于理解, 在所述字典表上对应每个字符列出的一个索引号,所述索引号在字典表中实质上是不存在 的。依据所述经过解压缩后的字符的自定义编码Bit值在所述字典表中找到该字符对应的 ASCII编码Bit值。如依据所述分组Group-Ι中所示的字符自定义编码查找字典后找到该 字符对应的ASCII编码Bit值,得到如表6所示结果:
[0078]
[0079] 表 6
[0080] 本实施例中的字典表存在于解压缩端,即可能存在于接收数据端,如RPC请求端 等。所述字典表通过安装于终端内的应用程序、或网页脚本存在于所述终端缓存中。
[0081] 找到分组字符对应的ASCII码值后即完成了本实施例对数据压缩包的解压缩操 作。
[0082] 通过实施例一对基于62个文本字符的重自定义编码处理,节约了 25%的数据传 输,提升了数据传输的效率;又通过实施例二对文本数据的解压处理使接收端能够轻易识 别解压所述压缩数据包。
[0083] 以上为本申请实施例一提供了文本数据压缩方法、实施例二提供的文本数据解压 方法,基于同样的思路,本申请实施例还提供相应的文本数据压缩、解压装置。
[0084] 实施例3
[0085] 图3所示为本申请实施例三提供的文本数据压缩装置的结构示意图,具体包括:
[0086] 提取单元301,用于提取数据包内的字符,其中,所述字符占用确定的字节数;
[0087] 转换单元302,用于依据所述字符的标准编码,通过特定方式得到该字符对应的自 定义编码,所述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数;
[0088] 压缩单元303,用于将所述自定义编码有用的低位Bit值压缩至一定字节空间内, 其中,所述一定字节空间少于所述字符标准编码占用的字节空间;
[0089] 发送单元304,用于将所述压缩后的数据包发送出去。
[0090] ASCII编码字符的数量超过了 128,在二进制中需要占用8个Bit值来进行编码, 且最多可编码256个字符。在某些特定应用场景下,需要编码的字符数量少于128个或者 更少,如在一些RPC调用场景下,需要编码的字符仅仅涉及到0-9、A-Z、a-z共62个字符。 而本步骤所述数据包中则指这种只涉及62个字符的情况,在编码过程中只需从0编码至61 即可,而在二进制中6个Bit值可以编码64个字符。
[0091] 所以本实施例中涉及的62个字符只需占用六位Bit值即可完成编码,然后通过提 取有用的六位Bit值并压缩至更少的字节空间内来进行压缩。如ASCII编码中占用四个字 节的四个字符转换为自定义编码后,再提取表示四个字符的自定义编码的低六位Bit值压 缩至三个字节内。
[0092] 所述提取单元301用于提取需要发送的数据包内采用ASCII编码的若干个字符并 以在逻辑上以四个字符分为一组,每个字符占用一个字节,如实施例一中表1所示。
[0093] 所述数据包的压缩主要是针对需要进行传输发送的数据包进行压缩,在数据包发 送端进行操作。如针对海量数据请求的RPC远程服务调用,在被请求的服务器端对需要发 送给请求方的数据包进行压缩。本案应用不限于海量数据请求的RPC远程服务调用,适用 于所有传输0-9、A-Z、a-z的数据包应用场景。
[0094] 所述转换单元302转换自定义编码与标准编码所采用的特定方式包括算法换算、 编码映射关系表等方式,本实施例中所述标准编码为ASCII代码:
[0095] 算法换算是指通过该算法将所述字符对应的ASCII编码换算成该字符对应的自 定义编码。
[0096] 所述编码映射关系是指通过ASCII编码与自定义编码之间的映射关系表来实现, 具体来说,是通过查找字典表的方式来实现转换。如实施例一中表2所示的字典表,是指将 0-9、A-Z、a-z共62个字符进行重新自定义编码,并与字符0-9、A-Z、a-z的ASCII编码建立 映射的关系表,包括表示ASCII编码的Bit值、表示自定义编码的Bit值。为了便于理解, 在所述字典表上对应每个字符列出的一个索引号,所述索引号在字典表中实质上是不存在 的。
[0097] 此实施例所指标准编码为对应字符的ASCII编码,所述自定义编码为本实施例涉 及的62个字符的对应的0-61的编码,所述自定义编码在二进制表示时,限于计算机存储单 位的限制,一个字符对应的自定义编码仍然需要占用一个字节,而该一个字符对应的自定 义编码占用的一个字节中只有低六位Bit值有效,高两位Bit值为多余空间。所以所述自 定义编码所编码的位Bit数小于所述标准编码所编码的Bit数。
[0098] 所述压缩单元303用于保留原分组中4个字节的低六位并存储在3个字节内,可 以采用移位方式、或者转移方式进行压缩:
[0099] -、移位原则:自分组内第二个字节开始向右位移的2*(n_l)位,所述η表示分组 内的存储4个字符的字节序号,如表示第一个字符的字节为1、表示第二个字符的字节为2、 表示第三个字符的字节为3、表示第四个字符的字节为4。所以在移位操作时,第一个字节 的Bit值无需变动;第二个字节Bit值向右移动两位,同时第二个字节的低两位Bit值覆盖 第一个字节Bit值的高两位;第三个字节Bit值向右移动四位,同时第三个字节Bit值的低 两位覆盖所述第二字节Bit值的高两位;所述第四个字节Bit值向右移动六位,同时,第四 个字节Bit值的低两位覆盖第三个字节Bit值的高两位;放弃第四个字节Bit值的高两位。 完成将所述4个字节的容量压缩至3个字节内。
[0100] 二、转移原则:开辟一个占有3个字节的新分组,将原分组内的4个字节的低六位 分别依次复制到新分组的3个字节内,并丢弃原分组。所述ASCII编码与所述自定义编码 在机器层面均通过二进制Bit值表示。
[0101] 所述发送单元304将所述压缩后的数据包发送至请求方。经过所述压缩单元303 的压缩操作后,原本一组4个字符需要4个字节的容量被压缩至只需要3个字节的容量,在 本步骤的数据传输中减少了 25%的数据传输量,提高了请求传输效率。
[0102] 实施例4
[0103] 图4所示为本申请实施例四提供的文本数据解压缩装置的结构示意图,主要用于 解压经过实施例三进行压缩的数据包,具体包括:
[0104] 接收单元401,用于接收发送方压缩后的数据包;
[0105] 解压单元402,用于依次提取压缩数据包内表示一个字符的Bit值作为该字符的 自定义编码;
[0106] 转换单元403,用于依据所述字符的自定义编码通过特定方式获得该字符对应的 标准编码,其中,所述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数。
[0107] 本实施例的标准编码指代ASCII编码。
[0108] 所述接收单元401接收的数据包是指经过实施例三压缩后的数据包。数据包的解 压主要是指针对接收到压缩后的数据包进行解压缩处理,在数据包接收端进行操作,如在 网页端、智能终端等。
[0109] 所述表示一个字符自定义编码的Bit值为六位Bit值。所述压缩数据包内的字符 是经过实施例三压缩并分组的,每组包括4个字符数据并占用3个字节容量。
[0110] 所述解压单元402,用于将所述压缩成3个字节的4个字符还原成之前每个字符占 用一个字节的自定义编码。
[0111] 具体是依次将数据包内每六位Bit值提取出来作为表示一个字符自定义编码的 低六位复原字符对应的自定义编码。具体解压缩原则可采用如下方式之一:
[0112] -、移位方式:与实施例一中的移位原则相反,采用相反的向左移位的方式进行, 在所述分组原则下最终将所述3个字节复原成4个字节。在此,详细原则不再赘述。
[0113] 二、转移原则:首先开辟一个新字节空间,该字节的高两位均设为零;再依次数据 包内表示每个字符的六位Bit值至所述新开辟的字节空间的低六位上。这样就完成了压缩 数据包到自定义编码的解压过程。
[0114] 所述转换单元403转换自定义编码与标准编码所采用的特定方式包括算法换算、 编码映射关系表等方式:
[0115] 所述算法换算是指通过一种算法将所述字符对应的自定义编码换算成该字符对 应的ASCII编码。
[0116] 所述编码映射关系是指通过ASCII编码与自定义编码之间的映射关系表来实现, 具体来说,是通过查找字典表的方式来实现转换。如实施例一表2所示的字典表,是指将 0-9、A-Z、a-z共62个字符进行重新自定义编码,并与字符0-9、A-Z、a-z的ASCII编码建立 映射的关系表,包括表示ASCII编码的Bit值、表示自定义编码的Bit值。为了便于理解, 在所述字典表上对应每个字符列出的一个索引号,所述索引号在字典表中实质上是不存在 的。依据所述经过解压缩后的字符的自定义编码Bit值在所述字典表中找到该字符对应的 ASCII编码Bit值。
[0117] 本实施例中的字典表存在于解压缩端,即可能存在于接收数据端,如RPC请求端 等。所述字典表通过安装于终端内的应用程序、或网页脚本存在于所述终端缓存中。
[0118] 找到分组字符对应的ASCII码值后即完成了本实施例对数据压缩包的解压缩操 作。
[0119] 实施例5
[0120] 如图5所示为本实施例描述的应用于基于TCP协议的RPC网络通信中的文本数据 压缩、解压方法。主要是指在高并发、海量数据请求的RPC远程过程调用场景中,TCP层传 输数据包过大,占用过多网络带宽,在本应用场景中,传输数据包中的字符仅涉及到62个 文本字符(0-9, A-Z,a-z)。通常在计算机系统中对字符的识别一般采用ASCII编码,ASCII 编码在二进制中占用8个Bit位,最多可编码256个字符。在本应用场景中,62个文本字 符进行自定义编码的话,十进制0-61的编码仅需占用6个Bit值。如此,一个字节的六位 Bit值可以用于存储一个字符的自定义编码,同时,该字节的其他两位Bit值则可以被用于 存储其他字符的自定义编码的Bit值,可以有效压缩文本数据占用空间,实现数据传输前 的压缩,而后在数据接收端采用相反的方式进行解压缩操作。包括如下步骤:
[0121] S501 :远程服务提供者接收RPC调用请求。
[0122] 本步骤所述远程服务提供者是指提运行有服务的远端服务器,所述RPC调用请求 来自远程服务使用者,如用户终端等。
[0123] S502 :远程服务提供者运行对应服务并获得需要发送的数据包。
[0124] 所述数据包是通过运行所述对应服务后而得到的需要发送给服务使用者的数据 信息。
[0125] S503 :提取数据包内的字符。
[0126] 本步骤具体是提取数据包内采用ASCII编码的四个字符分为一组的方式进行,且 每个字符占用一个字节,如将数据包内的字符集"HelloWorldOl"每次提取四个字符并进行 如下表1所示的分组。本处分组仅是逻辑上的分组概念,在计算机执行层面所述分组不是 必要的。
[0127] S504 :依据所述字符的ASCII编码,通过特定方式得到该字符对应的自定义编码。
[0128] 所述自定义编码为本实施例涉及的62个字符的对应的0-61的编码,所述自定 义编码在二进制表示时,限于计算机存储单位的限制,一个字符对应的自定义编码仍然需 要占用一个字节,而该一个字符对应的自定义编码占用的一个字节中只有低六位Bit值有 效,高两位Bit值为多余空间。所以所述自定义编码所编码的位Bit数小于所述标准编码 所编码的Bit数。
[0129] 所述特定方式可以是一种算法,通过该算法将所述字符对应的ASCII编码换算成 该字符对应的自定义编码。
[0130] 所述特定方式还可以通过ASCII编码与自定义编码之间的映射关系表来实现,具 体来说,是通过查找字典表的方式来实现转换。如实施例一中表2所不的字典表,建立了 0-9、A-Z、a-z共62个字符的自定义编码对应的ASCII编码之间的映射的关系,包括表示 ASCII编码的Bit值、表示自定义编码的Bit值。为了便于理解,在所述字典表上对应每个 字符列出的一个十进制索引号,所述索引号在字典表中实质上是不存在的。
[0131] 然后依据所述字符的ASCII编码Bit值在所述字典表中得到该字符对应的自定义 编码Bit值。依据实施例一中表1所述的分组Group-Ι为例,得到如实施例一中表3所示 的字符对应的自定义编码Bit值。
[0132] S505 :将所述自定义编码有用的低位Bit值压缩至一定字节空间内。
[0133] 因为字符0-9、A-Z、a-z的自定义编码只需占用六个Bit值就能完成编码,一个字 节表示的字符的自定义编码的高两位均无需用到,所以将有用的低六位Bit值压缩存储至 更少的字节空间内。
[0134] 本步骤具体是指将所述字符对应的自定义编码的二进制Bit值的低六位依次复 制保存至新的存储空间内。如所述分组Group-Ι经过压缩操作后,得到如实施例一中表4 所示结果。
[0135] S506 :将所述压缩后的数据包发送给服务使用者。
[0136] 在此步骤完成了基于TCP协议的RPC网络通信中的文本数据压缩过程,同时将所 述数据的存储空间减少了 25%,使得在RPC调用传输过程中节省了 25%的数据传输量,提 高了请求传输效率。
[0137] 需要说明的是,所述分组是为便于说明进行的逻辑上的分组,在计算机层面执行 时,仅需将数据包内的字符依次提出并转换成对应自定义编码,再将所述字符自定义编码 的低六位Bit值依次存储至新的字节空间内即可。
[0138] S507 :服务使用者接收压缩数据包。
[0139] 本步骤所述服务使用者可以是网页端、智能终端等。
[0140] S508 :依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义编码。
[0141] 所述表示一个字符的Bit值是指表示一个字符的自定义编码的六位Bit值。具体 是依次将数据包内每六位Bit值提取出来作为表示一个字符自定义编码的低六位复原字 符对应的自定义编码。
[0142] 首先开辟若干新字节空间,该若干字节的高两位均设为零;再依次复制数据包内 表示每个字符的六位Bit值至所述新开辟的若干字节空间的低六位上。这样就完成了压缩 数据包到自定义编码的解压过程。
[0143] 如依据分组Group-Ι经过解压缩操作后,得到如实施例二中表5所示结果。
[0144] S509依据所述字符的自定义编码通过特定方式获得该字符对应的ASCII编码。
[0145] 所述特定方式可以是一种算法,通过该算法将所述字符对应的自定义编码换算成 该字符对应的ASCII编码。
[0146] 所述特定方式还可以通过ASCII编码与自定义编码之间的映射关系表来实现,具 体来说,是通过查找字典表的方式来实现转换。如实施例一中表2所示的字典表,是指将 0-9、A-Z、a-z共62个字符进行重新自定义编码,并与字符0-9、A-Z、a-z的ASCII编码建立 映射的关系表,包括表示ASCII编码的Bit值、表示自定义编码的Bit值。为了便于理解, 在所述字典表上对应每个字符列出的一个索引号,所述索引号在字典表中实质上是不存在 的。依据所述经过解压缩后的字符的自定义编码Bit值在所述字典表中找到该字符对应的 ASCII编码Bit值。如依据所述分组Group-Ι中所示的字符自定义编码查找字典后找到该 字符对应的ASCII编码Bit值,得到如实施例二中表6所示结果。
[0147] 找到所述压缩数据包内字符对应的ASCII码值后即完成了本实施例对压缩数据 包的解压缩操作。
[0148] 本实施例在服务提供者端通过对基于62个文本字符的重自定义编码处理,使62 个字符在传输过程中只占用6个Bit值空间,再在服务使用者一端再对所述压缩数据包解 压处理使接收端能够轻易识别解压所述压缩数据包,在基于TCP协议的RPC海量数据请求 调用过程中,在服务提供端对数据进行压缩,而后在调用端进行解压缩操作,节省了传输过 程中25 %的数据传输量。
[0149] 实施例6
[0150] 本实施例一、实施例二分别揭示了涉及62个字符采用自定义编码压缩、解压缩的 方法。本实施例是对实施例一、实施例二的扩展说明,当涉及的字符数在64-127个字符之 间时,此时,则需要将占用8个字符的8个字节空间压缩至7个字节,可节约12. 5%的传输 量。当然,在涉及超过255个字符但少于一定数量的应用场景下,还可以在自定义编码与 Unicode编码中进行类推式的压缩方法。在此,统称所述ASCII编码、Unicode编码为标准 编码,本案字典表中的编码为自定义编码。
[0151] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序 产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实 施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机 可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产 品的形式。
[0152] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程 图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一 流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算 机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理 器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生 用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能 的装置。
[0153] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特 定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指 令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或 多个方框中指定的功能。
[0154] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计 算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或 其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图 一个方框或多个方框中指定的功能的步骤。
[0155] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、 网络接口和内存。
[0156] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/ 或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质 的示例。
[0157] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法 或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。 计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、 动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电 可擦除可编程只读存储器(EEPR0M)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁 性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中 的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信 号和载波。
[0158] 还需要说明的是,术语"包括"、"包含"或者其任何其他变体意在涵盖非排他性的 包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包 括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要 素。在没有更多限制的情况下,由语句"包括一个……"限定的要素,并不排除在包括所述 要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0159] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。 因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的 形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存 储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形 式。
[0160] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员 来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同 替换、改进等,均应包含在本申请的权利要求范围之内。
【主权项】
1. 一种文本数据压缩方法,其特征在于,包括: 提取数据包内的字符,其中,所述字符占用确定的字节数; 依据所述字符的标准编码,通过特定方式得到该字符对应的自定义编码,所述自定义 编码所编码的位Bit数小于所述标准编码所编码的Bit数; 将所述自定义编码有用的低位Bit值压缩至一定字节空间内,其中,所述一定字节空 间少于所述字符的标准编码占用的字节空间。2. 如权利要求1所述的方法,其特征在于,所述字符是指0-9、A-Z、a-z的62个字符中 的任意一个字符; 所述自定义编码是对所述62个字符的自定义编码,所述标准编码为所述62个字符的 美国信息交换标准代码ASCII。3. 如权利要求1或2所述的方法,其特征在于,提取数据包内的字符,包括: 依次提取数据包内的各字符; 将提取的每四个字符作为一个分组。4. 如权利要求1或2所述的方法,其特征在于,依据所述字符的标准编码,通过特定方 式得到该字符对应的自定义编码,包括: 通过一定的换算方法将所述字符的标准编码换算成自定义编码。5. 如权利要求1或2所述的方法,其特征在于,依据所述字符的标准编码,通过特定方 式得到该字符对应的自定义编码,包括: 依据所述字符的标准编码查找字典表,其中,所述字典表是字符的自定义编码与字符 的标准编码之间的一种映射关系; 从字典表的映射关系中获得该字符的自定义编码。6. 如权利要求1或2所述的方法,其特征在于,将所述自定义编码有用的低位Bit值压 缩至一定字节空间内,包括: 提取所述字符的自定义编码中有用的低位Bit值; 将提取的所述有用的低位Bit值存储至一定字节空间内。7. 如权利要求6所述的方法,其特征在于,所述自定义编码为十进制数0-61分别对应 的二进制编码,所述有用的低位Bit值是指自定义编码中的低六位Bit值。8. 如权利要求1所述的方法,其特征在于,所述方法还包括将压缩后的数据包发送给 数据包接收端。9. 一种文本数据解压方法,其特征在于,包括: 依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义编码; 依据所述字符的自定义编码通过特定方式获得该字符对应的标准编码,其中,所述自 定义编码所编码的Bit数小于所述标准编码所编码的Bit数。10. 如权利要求9所述的方法,其特征在于,所述字符是指0-9、A-Z、a-z的62个字符 中的任意一个字符; 所述自定义编码是对所述62个字符的自定义编码,所述标准编码为所述62个字符的 美国信息交换标准代码ASCII。11. 如权利要求9或10所述的方法,其特征在于,依次提取压缩数据包内表示一个字符 的Bit值作为字符的自定义编码,包括: 依次提取数据包内表示一个字符的六位Bit值作为该字符自定义编码的低六位Bit 值; 将该字符自定义编码的高位Bit值设为零。12. 如权利要求9或10所述的方法,其特征在于,依据所述字符的自定义编码,通过特 定方式得到该字符对应的标准编码,包括: 通过一定的换算方法将所述字符的自定义编码换算成标准编码。13. 如权利要求9或10所述的方法,其特征在于,依据所述字符的自定义编码,通过特 定方式得到该字符对应的标准编码,包括: 依据所述字符的自定义编码查找字典表,其中,所述字典表是字符的自定义编码与字 符的标准编码之间的一种映射关系; 从字典表的映射关系中获得该字符的标准编码。14. 如权利要求9所述的方法,其特征在于,所述方法还包括接收来自发送端的压缩数 据包。15. -种文本数据压缩装置,其特征在于,包括: 提取单元,用于提取数据包内的字符,其中,所述字符占用确定的字节数; 转换单元,用于依据所述字符的标准编码,通过特定方式得到该字符对应的自定义编 码,所述自定义编码所编码的位Bit数小于所述标准编码所编码的Bit数; 压缩单元,用于将所述自定义编码有用的低位Bit值压缩至一定字节空间内,其中,所 述一定字节空间少于所述字符的标准编码占用的字节空间。16. 如权利要求15所述的装置,其特征在于,所述字符是指0-9、A-Z、a-z的62个字符 中的任意一个字符; 所述自定义编码是对所述62个字符的自定义编码,所述标准编码为所述62个字符的 美国信息交换标准代码ASCII。17. 如权利要求15或16所述的装置,其特征在于,所述提取单元,用于提取数据包内的 字符,包括: 依次提取数据包内的各字符; 将提取的每四个字符作为一个分组。18. 如权利要求15或16所述的装置,其特征在于,所述转换单元,用于依据所述字符的 标准编码,通过特定方式得到该字符对应的自定义编码,包括: 通过一定的换算方法将所述字符的标准编码换算成自定义编码。19. 如权利要求15或16所述的装置,其特征在于,所述转换单元,用于依据所述字符的 标准编码,通过特定方式得到该字符对应的自定义编码,包括: 依据所述字符的标准编码查找字典表,其中,所述字典表是字符的自定义编码与字符 的标准编码之间的一种映射关系; 从字典表的映射关系中获得该字符的自定义编码。20. 如权利要求15或16所述的装置,其特征在于,所述压缩单元,用于将所述自定义编 码有用的低位Bit值压缩至一定字节空间内,包括: 提取所述字符的自定义编码中有用的低位Bit值; 将提取的所述有用的低位Bit值存储至一定字节空间内。21. 如权利要求20所述的装置,其特征在于,所述自定义编码为十进制数0-61分别对 应的二进制编码,所述有用的低位Bit值是指自定义编码中的低六位Bit值。22. 如权利要求15所述的装置,其特征在于,所述装置还包括发送单元,用于将压缩后 的数据包发送给数据包接收端。23. -种文本数据解压装置,其特征在于,包括: 解压单元,用于依次提取压缩数据包内表示一个字符的Bit值作为字符的自定义编 码; 转换单元,用于依据所述字符的自定义编码通过特定方式获得该字符对应的标准编 码,其中,所述自定义编码所编码的Bit数小于所述标准编码所编码的Bit数。24. 如权利要求23所述的装置,其特征在于,所述字符是指0-9、A-Z、a-z的62个字符 中的任意一个字符; 所述自定义编码是对所述62个字符的自定义编码,所述标准编码为所述62个字符的 美国信息交换标准代码ASCII。25. 如权利要求23或24所述的装置,其特征在于,所述提取单元,用于依次提取压缩数 据包内表示一个字符的Bit值作为字符的自定义编码,包括: 依次提取数据包内表示一个字符的六位Bit值作为该字符自定义编码的低六位Bit 值; 将该字符自定义编码的高位Bit值设为零。26. 如权利要求23或24所述的装置,所述转换单元,用于依据所述字符的自定义编码, 通过特定方式得到该字符对应的标准编码,包括: 通过一定的换算方法将所述字符的自定义编码换算成标准编码。27. 如权利要求23或24所述的装置,其特征在于,所述转换单元,用于依据所述字符的 自定义编码,通过特定方式得到该字符对应的标准编码,包括: 依据所述字符的自定义编码查找字典表,其中,所述字典表是字符的自定义编码与字 符的标准编码之间的一种映射关系; 从字典表的映射关系中获得该字符的标准编码。28. 如权利要求23所述的装置,其特征在于,所述装置还包括接收单元,用于接收来自 发送端的压缩数据包。
【文档编号】G06F17/30GK105868194SQ201510026015
【公开日】2016年8月17日
【申请日】2015年1月19日
【发明人】王俊翔
【申请人】阿里巴巴集团控股有限公司