一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种字符串编码、解码方法及编码装置和解码装置与流程

2022-12-23 21:05:12 来源:中国专利 TAG:


1.本发明涉及数据处理技术领域,特别是涉及一种字符串编码、解码方法及编码装置和解码装置。


背景技术:

2.在数据应用场景中,例如日志文本、网络文本等应用均包含大量的字符型数字,字符型数字是指能够以文本的方式显示和打印的字符,并且以字符串的形式存储。字符型数字比数字型数字占用更多的存储空间,因此,为了减少字符型数字的存储空间,现有技术中,通过增大数字的进制使每一个字符型数字能够存储更多的状态,从而减少字符串数字的存储空间。
3.例如,使用base64(64进制)对二进制字符串编码得到email/json等各种文本协议支持的字符串。但是,使用base64进行编码,会在编码的结果中出现“ ”“/
”“‑”“
=”等特殊符号,显示在html上的时候,不能兼容浏览器上的鼠标双击选中的功能;并且使用base64进行编码,显示在url里面的时候“ ”“/”“=”这三种特殊符号需要进行转移,导致可读性较差,也导致编码的空间性能变差,无法更好地应用。


技术实现要素:

4.针对于上述问题,本发明提供一种字符串编码、解码方法及编码装置和解码装置,以解决现有技术中编码后的数据兼容性差以及应用性差的问题。
5.为了实现上述目的,本发明提供了如下技术方案:
6.一种字符串编码方法,包括:
7.获取待编码的数据,所述待编码的数据为二进制字符串;
8.对所述待编码的数据进行分组,获得若干个字符串数组;
9.对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果;
10.将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据,所述编码数据为使用0至9以及大小写字母完成编码的数据。
11.可选地,所述对所述待编码的数据进行分组,获得若干个字符串数组,包括:
12.对所述待编码的数据按照八个八位二进制字节进行分组,获得若干个字符串数组。
13.可选地,所述对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果,包括:
14.对每一字符串数组按照目标方式,确定初始二进制数,所述初始二进制数为长度最大为64位的二进制正整数;
15.将所述初始二进制数进行转换,得到目标二进制数,所述目标二进制数为最大十一位的62进制正整数;
16.对所述目标二进制数按照所述目标方式进行转换,获得若干个正整数,所述正整数为0至61的正整数;
17.基于62进制编码对照表,将若干个所述正整数转换成整数和/或大小写字母,以获得每一字符串数组编码后的结果。
18.可选地,所述方法还包括:
19.若字符串数组中的最后一个字符串数组不足八个二进制字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
20.一种字符串解码方法,包括:
21.获取待解码的数据,所述待解码的数据为使用0至9以及大小写字母完成编码的数据;
22.对所述待解码的数据进行分组,获得若干个字符串数组;
23.将每一字符串数组中的数据进行解码,获得每一字符串数组解码后的结果,所述解码后的结果为二进制字符;
24.将每一个字符串数组解码后的结果进行拼接,得到所述待解码的数据对应的解码数据。
25.可选地,所述对所述待解码的数据进行分组,获得若干个字符串数组,包括:
26.将所述待解码的数据按照11个字符进行分组,获得若干个字符串数组。
27.可选地,所述将每一字符串数组中的数据进行解码,获得每一字符串数组解码后的结果,包括:
28.将每一字符串数组中的字符转换为初始正整数,所述初始正整数为0至61的正整数;
29.对所述初始正整数进行转换,获得目标正整数,所述目标正整数为最大64位的二进制正整数;
30.将所述目标正整数按照目标方式转换成八个二进制数据,以获得每一字符换数组解码后的结果。
31.可选地,所述方法还包括:
32.若字符串数组中的最后一个字符串数组不足11个字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
33.一种字符串编码装置,包括:
34.第一获取单元,用于获取待编码的数据,所述待编码的数据为二进制字符串;
35.第一分组单元,用于对所述待编码的数据进行分组,获得若干个字符串数组;
36.编码单元,用于对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果;
37.第一拼接单元,用于将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据,所述编码数据为使用0至9以及大小写字母完成编码的数据。
38.一种字符串解码装置,包括:
39.第二获取单元,用于获取待解码的数据,所述待解码的数据为使用0至9以及大小写字母完成编码的数据;
40.第二分组单元,用于对所述待解码的数据进行分组,获得若干个字符串数组;
41.解码单元,用于将每一字符串数组中的数据进行解码,获得每一字符串数组解码后的结果,所述解码后的结果为二进制字符;
42.第二拼接单元,用于将每一个字符串数组解码后的结果进行拼接,得到所述待解码的数据对应的解码数据。
43.相较于现有技术,本发明提供了一种字符串编码、解码方法及编码装置和解码装置,在该编码方法中获取待编码的数据,对待编码的数据进行分组,获得若干个字符串数组;对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果;将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据,所述编码数据为使用0至9以及大小写字母完成编码的数据。本发明中仅适用了0至9以及大小写字母完成编码,解决了现有技术中特殊字符不能兼容的问题,并且将输入的二进制字符进行分组,对每个分组分别进行编码,使得应用范围更广。
附图说明
44.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
45.图1为本发明实施例提供的一种字符串编码方法的流程示意图;
46.图2为本发明实施例提供的一种数据读取方式的示意图;
47.图3为本发明实施例提供的一种62进制编码对照表的示意图;
48.图4为本发明实施例提供的一种字符串解码方法的流程示意图;
49.图5为本发明实施例提供的一种字符串编码装置的结构示意图;
50.图6为本发明实施例提供的一种字符串解码装置的结构示意图。
具体实施方式
51.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
52.本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
53.在本发明实施例中提供了一种字符串编码方法,该字符串编码方法基于62进制的二进制字符串编码方法,是一种把二进制字符串编码成ascii(american standard code for information interchange,美国信息交换标准代码)可打印字符串的方式,保证编码后的字符串可以放在json/email里面,或者放在doc文档里面打印出来,而不丢失原来二进制的任何信息。
54.参见图1,其示出了本发明实施例提供的一种字符串编码方法的流程示意图,该方
法包括:
55.s101、获取待编码的数据。
56.在本发明实施例中待编码的数据为二进制字符串,一般在计算机中所有的数据在存储和运算时都要使用二进制数表示,字符型数字若以二进制方式存储,占用的存储空间大,为了减少字符型数字存储占用的空间,需要对字符型数字进行编码,本发明实施例中可以对二进制字符串进行62进制编码。
57.s102、对所述待编码的数据进行分组,获得若干个字符串数组。
58.将待编码的数据即将输入的二进制字符串按照8个8位二进制字节进行分许,即每8位256进制整数分一组。从而得到了若干个字符串数据。通常62进制编码仅能对正整数进行编码,要么限制输入字符串长度只有8个字符,要么编码和解码时间随字符串长度平方级增长,使得适用性较差。而本发明实施了中将输入的二进制字符串按照8个二进制字符进行分组,对每个分组分别进行编码,解决了62进制技术仅能对正整数进行编码的问题。
59.s103、对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果。
60.在本发明实施例中进行62进制编码时仅使用了0至9以及大小写字母完成编码。具体的,在本发明实施例的一种实施方式中,所述对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果,包括:
61.对每一字符串数组按照目标方式,确定初始二进制数,所述初始二进制数为长度最大为64位的二进制正整数;
62.将所述初始二进制数进行转换,得到目标二进制数,所述目标二进制数为最大十一位的62进制正整数;
63.对所述目标二进制数按照所述目标方式进行转换,获得若干个正整数,所述正整数为0至61的正整数;
64.基于62进制编码对照表,将若干个所述正整数转换成整数和/或大小写字母,以获得每一字符串数组编码后的结果。
65.其中,目标方式是指高地址位存高位数据的模式(即big-ending),也可以称为大端模式(big-endian),参见图2所示,就是将高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。在每一组里面,按照big-ending的方式读取出来作为一个长度最大的64位的二进制正整数。将该正整数通过反复取余62和整除62的方式将其转换成一个最大11位的62进制正整数。将转换后的正整数按照big-ending的方式变成11个0-61的正整数,通过查询如图3所示的62进制编码对照表将11个正整数转成整数和大小写字母11个字符。
66.s104、将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据。
67.所述编码数据为使用0至9以及大小写字母完成编码的数据。即将所有每个分组的结果顺次相连拼接起来得到最终的结果。
68.在上述实施例的基础上,本发明的编码方法还包括:
69.若字符串数组中的最后一个字符串数组不足八个二进制字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
70.其中,目标字符是“\x00”。因此,在最后一个不足8个二进制字符的分组,在前面加
上\x00字符补充到8位进行编码,并且将生成出来的11个字符使用查表方式根据输入长度删去前面多余的“0”字符。
71.本发明实施例提供了一种字符串编码方法,获取待编码的数据,对待编码的数据进行分组,获得若干个字符串数组;对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果;将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据,所述编码数据为使用0至9以及大小写字母完成编码的数据。本发明中仅适用了0至9以及大小写字母完成编码,解决了现有技术中特殊字符不能兼容的问题,并且将输入的二进制字符进行分组,对每个分组分别进行编码,使得应用范围更广。
72.对上述的编码方法进行举例说明,待编码的数据即输入的二进制字符串是一个长度为17字节的字符串,其内容为{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}。通过本发明实施例的字符串编码方法进行编码后输出的字符串为长度24字节的字符串,其内容为{05mcjmdgrvc0m7aqfuv3b20h}。具体的,编码过程如下:
73.将输入的字符串{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17}按照八个八位二进制字节进行分组,得到3组,内容分别为:
74.{1,2,3,4,5,6,7,8},{9,10,11,12,13,14,15,16},{17}。
75.在每一组里面,按照big-ending的方式读取出来作为一个长度最大为64为的二进制正整数,内容用十进制表示为(前面16进制表示,后面即括号内10进表示):
76.0x102030405060708(72623859790382856),0x90a0b0c0d0e0f10(651345242494996240),0x11(17)。
77.将该正整数通过反复取余62和整除62的方式将其转换成一个最大11位的62进制正整数,内容分别为(其中,里面每一个数字是62进制的一位数值):
78.{38,57,53,42,13,48,19,38,22,5},{2,11,3,57,56,15,26,10,7,48},{17}。
79.通过查取图3中的对照表,将11个正整数转换成整数和大小写字母11字符,内容分别为:
80.05mcjmdgrvc,0m7aqfuv3b2,0h。
81.将所有每个分组的结果顺次相连拼接起来得到最终结果,内容为:
[0082]“05mcjmdgrvc0m7aqfuv3b20h”。
[0083]
在上述编码实施例的基础上,本发明实施例还提供了一种字符串解码方法,参见图4,该方法包括:
[0084]
s201、获取待解码的数据。
[0085]
所述待解码的数据为使用0至9以及大小写字母完成编码的数据;
[0086]
s202、对所述待解码的数据进行分组,获得若干个字符串数组;
[0087]
s203、将每一字符串数组中的数据进行解码,获得每一字符串数组解码后的结果,所述解码后的结果为二进制字符;
[0088]
s204、将每一个字符串数组解码后的结果进行拼接,得到所述待解码的数据对应的解码数据。
[0089]
进一步的,所述对所述待解码的数据进行分组,获得若干个字符串数组,包括:
[0090]
将所述待解码的数据按照11个字符进行分组,获得若干个字符串数组。
[0091]
进一步的,所述将每一字符串数组中的数据进行解码,获得每一字符串数组解码
后的结果,包括:
[0092]
将每一字符串数组中的字符转换为初始正整数,所述初始正整数为0至61的正整数;
[0093]
对所述初始正整数进行转换,获得目标正整数,所述目标正整数为最大64位的二进制正整数;
[0094]
将所述目标正整数按照目标方式转换成八个二进制数据,以获得每一字符换数组解码后的结果。
[0095]
在本发明实施例中的解码方法中还包括:若字符串数组中的最后一个字符串数组不足11个字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
[0096]
具体的,本发明实施例字符串的解码方法是将字符串解码二进制,将输入的二进制字符串按照11个字符进行分组,通过查表(62进制编码对照表)方式将11个字符转换成11个0-61的正整数。通过反复乘62和求和的方式将其转成一个最大64位的二进制正整数。将64位的二进制按照big-ending的方式转成8个二进制。将所有每个分组的结果拼接起来得到最终结果。需要说明的是,最后一个不足11字符的分组,在前面加上“0”字符补充到8位进行编码,并且将生成出来的8个字符使用查表方式根据输入长度删去前面多余的“\x00”字符。
[0097]
在本发明实施例中仅使用0-9以及大小写字母完成编码,不使用特殊符号,所有大小写敏感的文本系统均兼容,支持任意长度二进制字符串输入。可以保证对于任意相同长度输入字符串a/b,输入字符串和输出字符串的二进制大小比较结果总是一致。字符串编码和解码时间随二进制字符串线性增长。经验证,在一台2.3ghz的4核i7的cpu上面,使用golang编程工具实现本方案,单线程编码1024字节的字符串消耗时间平均为3.596微秒,平均输入处理速度268.9mb/s,单线程解码1408字节的编码后的字符串消耗时间平均为2.433微秒,平均输入处理速度552.0mb/s。
[0098]
参见图5,本发明实施例提供了一种字符串编码装置,包括:
[0099]
第一获取单元11,用于获取待编码的数据,所述待编码的数据为二进制字符串;
[0100]
第一分组单元12,用于对所述待编码的数据进行分组,获得若干个字符串数组;
[0101]
编码单元13,用于对每一字符串数组中的数据进行62进制编码,获得每一字符串数组编码后的结果;
[0102]
第一拼接单元14,用于将每一字符换数据编码后的结果进行拼接,得到所述待编码的数据对应的编码数据,所述编码数据为使用0至9以及大小写字母完成编码的数据。
[0103]
在上述编码装置的基础上,所述第一分组单元具体用于:
[0104]
对所述待编码的数据按照八个八位二进制字节进行分组,获得若干个字符串数组。
[0105]
进一步的,所述编码单元包括:
[0106]
第一确定子单元,用于对每一字符串数组按照目标方式,确定初始二进制数,所述初始二进制数为长度最大为64位的二进制正整数;
[0107]
第一转换子单元,用于将所述初始二进制数进行转换,得到目标二进制数,所述目标二进制数为最大十一位的62进制正整数;
[0108]
第二转换子单元,用于对所述目标二进制数按照所述目标方式进行转换,获得若
干个正整数,所述正整数为0至61的正整数;
[0109]
第三转换子单元,用于基于62进制编码对照表,将若干个所述正整数转换成整数和/或大小写字母,以获得每一字符串数组编码后的结果。
[0110]
进一步的,所述装置还包括:
[0111]
补齐单元,用于若字符串数组中的最后一个字符串数组不足八个二进制字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
[0112]
参见图6,在本发明实施例中还提供了一种字符串解码装置,包括:
[0113]
第二获取单元21,用于获取待解码的数据,所述待解码的数据为使用0至9以及大小写字母完成编码的数据;
[0114]
第二分组单元22,用于对所述待解码的数据进行分组,获得若干个字符串数组;
[0115]
解码单元23,用于将每一字符串数组中的数据进行解码,获得每一字符串数组解码后的结果,所述解码后的结果为二进制字符;
[0116]
第二拼接单元24,用于将每一个字符串数组解码后的结果进行拼接,得到所述待解码的数据对应的解码数据。
[0117]
进一步的,所述第二分组单元具体用于:
[0118]
将所述待解码的数据按照11个字符进行分组,获得若干个字符串数组。
[0119]
可选地,所述解码单元包括:
[0120]
第四转换子单元,用于将每一字符串数组中的字符转换为初始正整数,所述初始正整数为0至61的正整数;
[0121]
第五转换子单元,用于对所述初始正整数进行转换,获得目标正整数,所述目标正整数为最大64位的二进制正整数;
[0122]
第六转换子单元,用于将所述目标正整数按照目标方式转换成八个二进制数据,以获得每一字符换数组解码后的结果。
[0123]
可选地,所述装置还包括:
[0124]
补齐单元,用于若字符串数组中的最后一个字符串数组不足11个字符,利用目标字符将所述最后一个字符串数组中的位数补齐。
[0125]
基于前述实施例,本技术的实施例提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如上任一项的字符串编码方法和/或字符串解码方法。
[0126]
本发明实施例还提供了一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现的字符串编码方法和/或字符串解码方法的步骤。
[0127]
需要说明的是,上述处理器或cpu可以为特定用途集成电路(application specific integrated circuit,asic)、数字信号处理器(digital signal processor,dsp)、数字信号处理装置(digital signal processing device,dspd)、可编程逻辑装置(programmable logic device,pld)、现场可编程门阵列(field programmable gate array,fpga)、中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器中的至少一种。可以理解地,实现上述处理器功能的电子器件还可以为其它,本技术实施例不作具体限定。
[0128]
需要说明的是,上述计算机存储介质/存储器可以是只读存储器(read only memory,rom)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read-only memory,eprom)、电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性随机存取存储器(ferromagnetic random access memory,fram)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(compact disc read-only memory,cd-rom)等存储器;也可以是包括上述存储器之一或任意组合的各种终端,如移动电话、计算机、平板设备、个人数字助理等。
[0129]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0130]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
[0131]
另外,在本技术各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0132]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
[0133]
本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
[0134]
本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0135]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
[0136]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0137]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。
对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献