CN112232025B - 一种字符串存储方法、装置及电子设备 - Google Patents
一种字符串存储方法、装置及电子设备 Download PDFInfo
- Publication number
- CN112232025B CN112232025B CN201910561225.7A CN201910561225A CN112232025B CN 112232025 B CN112232025 B CN 112232025B CN 201910561225 A CN201910561225 A CN 201910561225A CN 112232025 B CN112232025 B CN 112232025B
- Authority
- CN
- China
- Prior art keywords
- field
- value
- character
- coding
- character group
- 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
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000004891 communication Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 3
- 230000001960 triggered effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 239000000126 substance Substances 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 101000695861 Arabidopsis thaliana Brefeldin A-inhibited guanine nucleotide-exchange protein 5 Proteins 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明实施例提供了一种字符串存储方法、装置及电子设备。该方法包括:获得待存储的字符串,其中,字符串是由多个字段下的字段值构成的;将字符串按照字段拆分为多个字符组;针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;将各个字符组的编码值进行组合,得到字符串的编码值;存储字符串的编码值。与现有技术相比,应用本发明实施例提供的方案,可以实现在存储字符串时,节省存储空间。
Description
技术领域
本发明涉及字符编码技术领域,特别是涉及一种字符串存储方法、装置及电子设备。
背景技术
由于计算机中的信息存储、传输和加工是以二进制码(0和1)形式进行的,因此,在计算机技术中,在存储字符时,需要将字符编码成二进制表示的形式,进而存储该字符的二进制编码,即计算机在存储字符时,实际所存储的内容为该字符的二进制编码。
当前,存在多种字符集,例如,ASCII(American Standard Code for InformationInterchange,美国信息互换标准代码)字符集、GB2312(信息交换用汉字编码)字符集、BIG5(大五码)字符集、Unicode(万国码)字符集等。其中,每个字符集根据对应的字符编码方式,定义了各个字符与二进制编码之间的一种对应关系。
由于在计算机技术中使用字节作为计算存储容量的一种计量单位,因此,在当前的各种字符编码方式中,当一个字符所对应的二进制数值的位数不能占满至少一个字节中的全部位数时,会在该二进制数值的高位补零,从而将补零后得到的二进制数值作为该字符的二进制编码。显然,在对该字符的二进制编码进行存储时,会造成存储空间的浪费。
以utf-8(8-bit Unicode Transformation Format)编码方式为例,该编码方式所得到的二进制编码是以8位为一个编码单位的可变长编码。例如,汉字“严”对应的unicode码是\u4e25,使用utf-8编码时,汉字“严”对应的二进制数值为100111000100101,由于100111000100101的位数超过8位,不足16位,因此需要在100111000100101的高位补零,得到汉字“严”对应的二进制编码为01001110 00100101,在传输和存储中需占用两个个字节。显然,在该utf-8编码方式中,计算机在存储汉字“严”时浪费了两位空间。
基于此,在相关技术中,计算机在对字符串进行存储时,需要首先根据所选定的字符集,对待编码的字符串逐字进行编码。进而,存储所得到的字符串的二进制编码。显然,由于在存储字符串中每个字符时可能存在存储空间浪费的情况,因此,在存储字符串时,可能浪费更多存储空间。
发明内容
本发明实施例的目的在于提供一种字符串存储方法、装置、电子设备及可读存储介质,以实现在存储字符串时,节省存储空间。具体技术方案如下:
第一方面,本发明实施例提供了一种字符串存储方法,所述方法包括:
获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
将所述字符串按照字段拆分为多个字符组;
针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
将各个字符组的编码值进行组合,得到所述字符串的编码值;
存储所述字符串的编码值。
可选的,一种具体实现方式中,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
可选的,一种具体实现方式中,关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:
为该字段值可控的字段的各个字段值分配一个数字编号;
基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
可选的,一种具体实现方式中,所述将各个字符组的编码值进行组合,得到所述字符串的编码值的步骤,包括:
判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;
如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;
如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。
可选的,一种具体实现方式中,所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;
基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
第二方面,本发明实施例提供了一种字符串存储装置,所述装置包括:
字符串获取模块,用于获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
字符串拆分模块,用于将所述字符串按照字段拆分为多个字符组;
字符组编码模块,用于针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
编码值组合模块,用于将各个字符组的编码值进行组合,得到所述字符串的编码值;
编码存储模块,用于存储所述字符串的编码值。
可选的,一种具体实现方式中,所述字符组编码模块具体用于:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
可选的,一种具体实现方式中,所述装置还包括:
关系确定模块,用于关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式;所述关系确定模块包括:
编号分配子模块,用于为该字段值可控的字段的各个字段值分配一个数字编号;
字节数量确定子模块,用于基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
编号子模块,用于针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
可选的,一种具体实现方式中,所述编码值组合模块包括:
字符组判断子模块,用于判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果是,触发位数获取子模块;
所述位数获取子模块,用于获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
目标字节数计算子模块,用于计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
数值判断子模块,用于判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和,如果是,触发编码值拼接子模块;
所述编码值拼接子模块,用于基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
编码值组合子模块,用于将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。
可选的,一种具体实现方式中,所述编码值拼接子模块具体用于:
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面提供的一种字符串存储方法中任一所述的方法步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面提供的一种字符串存储方法中任一所述的方法步骤。
以上可见,应用本发明实施例提供的方案,在存储由多个字段下的字段值构成的字符串时,可以按照字段将该字符串拆分为多个字符组,从而根据每个字符组所属字段对应的编码方式,对该字符组进行编码。进而,将每个字符组的编码值进行组合,得到该字符串的编码值并进行存储。其中,由于对于属于字段值可控的字段的字符组,是根据该字段的各个字段值与编码值的对应关系确定该字符组的编码值的,而该字段中每一字段值的编码值是基于该字段值的预定数字编号生成的,因此,在本发明实施例提供的方案中,所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数。基于此,应用本发明实施例提供的方案,在存储字符串时,可以节省存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种字符串存储方法的流程示意图;
图2为本发明实施例提供的一种关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式的流程示意图;
图3为图1中步骤S104的一种具体实现方式的流程示意图;
图4为图3中步骤S304的一种具体实现方式的流程示意图;
图5为本发明实施例提供的一种字符串存储装置的结构示意图;
图6为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在相关技术中,计算机在对字符串进行存储时,需要首先根据所选定的字符集,对待编码的字符串逐字进行编码。进而,存储所得到的字符串的二进制编码。显然,由于在存储字符串中每个字符时可能存在存储空间浪费的情况,因此,在存储字符串时,可能浪费更多存储空间。为了解决现有技术中存在的问题,本发明实施例提供了一种字符串存储方法。
下面,首先对本发明实施例提供的一种字符串存储方法进行介绍。
图1为本发明实施例提供的一种字符串存储方法的流程示意图。其中,该方法可以应用于任一需要进行字符串存储的电子设备,例如,平板电脑、笔记本电脑、手机等。对此本发明实施例不做具体限定,以下简称电子设备。
如图1所示,本发明实施例提供的一种字符串存储方法可以包括如下步骤:
S101:获得待存储的字符串;
其中,字符串是由多个字段下的字段值构成的;
S102:将字符串按照字段拆分为多个字符组;
S103:针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;
其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
S104:将各个字符组的编码值进行组合,得到字符串的编码值;
S105:存储字符串的编码值。
以上可见,应用本发明实施例提供的方案,在存储由多个字段下的字段值构成的字符串时,可以按照字段将该字符串拆分为多个字符组,从而根据每个字符组所属字段对应的编码方式,对该字符组进行编码。进而,将每个字符组的编码值进行组合,得到该字符串的编码值并进行存储。其中,由于对于属于字段值可控的字段的字符组,是根据该字段的各个字段值与编码值的对应关系确定该字符组的编码值的,而该字段中每一字段值的编码值是基于该字段值的预定数字编号生成的,因此,在本发明实施例提供的方案中,所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数。基于此,应用本发明实施例提供的方案,在存储字符串时,可以节省存储空间。
在本发明实施例提供的方案中,待存储的字符串是由多个字段下的字段值构成的,其中,字段值可以包括一个字符,也可以包括多个字符。例如,字符串为张三男数学,其中,张三是姓名字段下的字段值,男是性别字段下的字段值,数学是科目字段下的字段值。
基于此,电子设备在执行完上述步骤S101,获得待存储的字符串后,便可以继续执行上述步骤S102,将所获得的字符串按照字段拆分为多个字符组。其中,拆分得到的每个字符组属于一个字段。此外,由于字段值可以包括一个字符,也可以包括多个字符,则在上述步骤S102中,电子设备对待存储的字符串进行拆分得到的字符组可以包括一个字符,也可以包括多个字符。
其中,电子设备可以通过多种方式执行上述步骤S101。具体的,电子设备可以获取用户输入的待存储的字符串;电子设备也可以获取通信连接的其他电子设备发送的待存储的字符串;电子设备还可以对图像进行文字识别,将所识别得到的由多个字段下的字段值构成的字符串,作为待存储的字符串;等等。对此,本发明实施例不做具体限定。
在执行完上述步骤S102,得到多个字符组后,电子设备便可以继续执行上述步骤S103。其中,由于上述多个字符组是电子设备按照字段对所获得的待存储的字符串进行拆分得到的,因此,电子设备可以确定上述多个字符组中的每个字符组所属的字段。这样,在执行上述步骤S103时,针对每个字符组,电子设备便可以按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值。
其中,在上述步骤S103中,不同的字符组所属字段的类型可以是不同的,例如,字符组所属字段可以是字段值可控字段,也可以是字段值不可控字段。具体的,字段值可控字段表明该字段下的字段值的数量是有限的,可以穷举出该字段下的所有字段值,例如,性别字段、考试科目字段等;相应的,字段值不可控字段表明该字段下的字段值的数量是无限的,不能穷举出该字段下的所有字段值,例如,姓名字段。
而进一步的,不同类型的字段对应的编码方式也可以是不同的。其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;且每一字段值的编码值是基于该字段值的预定数字编号生成的。
例如,性别字段所包括的所有字段值为男和女,字段值男的预定数字编号为0,字段值女的预定数字标号为1,则可以基于数字编号0生成字段值男的编码值,基于数字编号1生成字段值女的编码值,进而,建立字段值男与编码值的对应关系和字段值女与编码值的对应关系,得到性别字段对应的编码方式。
为了行文清晰,以及更好地理解关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,后续将会对关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式进行举例说明。其中,任一字段值可控的字段的各个字段值与编码值的对应关系可以是电子设备确定的,也可以是其他电子设备确定并发送给电子设备的。这都是合理的。
基于此,可选的,一种具体实现方式中,电子设备执行上述步骤S103的具体方法为:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
在本具体实现方式中,针对每个字符组,电子设备可以首先确定该字符组所属字段的类型;进而,根据所确定的该字符组所属字段的类型,确定对该字符进行编码的方式。
具体的,如果该字符组所属字段为字段值可控的类型时,则电子设备便可以确定该字符组所属字段的各个字段值与编码值的对应关系,并将在该字符组所属字段的各个字段值中获取与该字符组相同的字段值。这样,电子设备便可以在上述对应关系中,将所获取的与该字符组相同的字段值对应的编码值确定为该字符组的编码值。
当该字符组所属字段为字段值不可控的类型时,则电子设备便可以根据预先设定的字符编码方式,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
例如,字符串为张三男数学,则电子设备可以拆分得到属于姓名字段的字符组张三,属于性别字段的字符组男,属于科目字段的字符组数学。其中,姓名字段的类型为字段值不可控字段,性别字段和科目字段的类型均为字段值可控字段。因此,针对张三,电子设备可以利用预定的字符编码方式,逐字进行编码,得到张三的编码值。例如,可以利用utf-8编码方式,得到张三的编码值。针对男,电子设备便可以利用关于性别字段的各个字段值与编码值的对应关系,确定男的编码值。针对数学,电子设备便可以利用关于科目字段的各个字段值与编码值的对应关系,确定男的编码值。
在执行完上述步骤S103,得到每个字符组的编码值后,电子设备便可以继续执行上述步骤S104,将各个字符组的编码值进行组合,得到字符串的编码值;并在得到字符串的编码值后,进一步执行上述步骤S105,存储所得到的编码值,从而完成对在执行上述步骤S101时所获得的待存储的字符串的存储。
其中,电子设备可以通过多种方式执行上述步骤S104,例如,电子设备可以按照各个字符组在上述待存储的字符串中的位置关系,依次排列各个字符组的编码值,并将排列完成所形成的编码值确定为字符串的编码值。
具体的,以字符串张三男数学为例,在得到张三的编码值A、男的编码值B和数学的编码值C后,便可以将上述编码值A、B和C按照张三、男和数学在上述字符串中的位置关系进行排列,得到编码值ABC。进而,电子设备便可以将编码值ABC确定为字符串张三男数学的编码值。
当然,电子设备还可以通过其他方式执行上述步骤S104,得到待存储的字符串的编码值。对此,本发明不做具体限定。为例行文清晰,后续将会对电子设备执行上述步骤S104的具体方式进行举例说明。
这样,在本发明实施例提供的方案中,相较于逐字对字符串进行编码得到的编码值,将字符串按照字段拆分为多个字符组,基于每个字符组的编码值所构成的字符串的编码值所占用的字节数较少,从而节省存储空间。
下面,对关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式进行举例说明。
可选的,一种具体实现方式中,如图2所示,关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式可以包括如下步骤:
S201:为该字段值可控的字段的各个字段值分配一个数字编号;
针对任一字段值可控的字段,电子设备可以确定属于该字段的所有字段值,进而,电子设备便可以为属于该字段的每个字段值分配一个数字编号。
其中,电子设备可以从0开始,按照由小到大的顺序,为每个字段值分配一个自然数作为数字编号;当然,电子设备也可以按照其他规则,为每个字段值分配数字编号。对此,本发明实施例不做具体限定。
以考试科目字段为例,由于属于考试科目字段的字段值为:语文、数学、英语、物理、化学、生物、地理、历史和政治,因此,属于考试科目字段的字段值是可以穷举的。这样,可以确定考试科目字段是字段值可控字段。进而,电子设备便可以为考试科目字段的每个字段值分配一个数字编号。
例如,电子设备可以为字段值语文分配数字编号0,为字段值数学分配数字编号1,为字段值英语分配数字编号2,为字段值物理分配数字编号3,为字段值化学分配数字编号4,为字段值生物分配数字编号5,为字段值地理分配数字编号6,为字段值历史分配数字编号7,为字段值政治分配字段编号8。
S202:基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
针对任一字段值可控的字段,由于属于该字段的字段值的数量是有限的,因此,电子设备便可以基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量。
具体的,由于每个字节为8位二进制数值,因此,一个字节可以表示的数字编号个数为28=256个,两个字节可以表示的数字编号个数为(28)2=65536个,以此类推,可以确定一定数量个字节可以表示的数字编号个数。而由于针对任一字段值可控的字段,电子设备为该字段的每个字段值分配了一个数字编号,因此,该字段的字段值的数量与所分配的数字编号的个数是相同的。即该字段下的字段值所需要的数字编号与该字段的字段值的数量是相同的。因此,电子设备便可以基于该字段值可控的字段下的字段值的数量与(28)之间的数值关系,从而确定该字段值可控的字段对应的字节数量。
以考试科目字段为例,由于属于考试科目字段的字段值为:语文、数学、英语、物理、化学、生物、地理、历史和政治,因此,属于考试科目字段的字段值是可以穷举的。这样,可以确定考试科目字段是字段值可控字段,且该字段的字段值的数量为9。进一步的,由于9<28,因此,考试科目字段对应的字节数量为1。
假设,可控字段P的字段值的数量为300,那么,由于28<200<(28)2,因此,可控字段P对应的字节数量为2。
显然,由于针对任一字段值可控的字段,由于该字段的字段值的数量与所分配的数字编号的个数是相同的,因此,在电子设备执行上述步骤S202时,也可以基于在上述步骤S201中所分配的数字编号的个数,确定该字段值可控的字段对应的字节数量。
S203:针对该字段值可控的字段下的每个字段值,基于字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值;
针对任一字段值可控的字段,电子设备在为该字段的各个字段值分配一个数字编号后,便可以基于所确定的该字段值对应的字节数量,对该字段的每个字段值的数字编号进行二进制编码,得到该字段值的编码值。
以考试科目字段为例,由于属于考试科目字段的字段值为:语文、数学、英语、物理、化学、生物、地理、历史和政治,因此,属于考试科目字段的字段值是可以穷举的。这样,可以确定考试科目字段是字段值可控字段。
进一步的,假设,电子设备为字段值语文分配数字编号0,为字段值数学分配数字编号1,为字段值英语分配数字编号2,为字段值物理分配数字编号3,为字段值化学分配数字编号4,为字段值生物分配数字编号5,为字段值地理分配数字编号6,为字段值历史分配数字编号7,为字段值政治分配字段编号8。
可以理解的,将上述考试科目字段的每个字段值的数字编号转换为二进制数值的转换结果如下:
字段值语文对应的二进制数值为0;字段值数学对应的二进制数值为1;字段值英语对应的二进制数值为10;字段值物理对应的二进制数值为11;字段值化学对应的二进制数值为100;字段值生物对应的二进制数值为101;字段值地理对应的二进制数值为110;字段值历史对应的二进制数值为111;字段值政治对应的二进制数值为1000。
而由于在计算机技术中,是以字节作为计算机存储容量的一种计量单位的,因此,每个字段值的编码值,需要占满至少一个字节的全部位数。而在本发明实施例中,属于同一字段值可控字段的各个字段值所要占满的字节数量相同。
基于此,针对任一字段值可控的字段,在确定该字段值可控的字段对应的字节数量后,为该字段值的数字编号进行编码时,需要保证所得到的编码值能够占满上述所确定的字节数量个字节所包括的全部位数。
也就是说,针对任一字段值可控的字段中的任一字段值,当电子设备确定该字段值的数字编码对应的二进制数值的位数不能够占满上述所确定的字节数量个字节所包括的全部位数时,电子设备会直接在该字段值的数字编码对应的二进制数值的最高位前补零,直至占满上述所确定的字节数量个字节所包括的全部位数。
因此,针对任一字段值可控的字段,电子设备在执行完上述步骤S201和S202,得到该字段值可控的字段的各个字段值的数字编号,以及该字段值可控的字段对应的字节数量后,便可以继续执行上述步骤S203,基于字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
仍然以考试科目字段为例,由于属于考试科目字段的字段值为:语文、数学、英语、物理、化学、生物、地理、历史和政治,因此,属于考试科目字段的字段值是可以穷举的。这样,可以确定考试科目字段是字段值可控字段。进一步的,可以确定考试科目字段对应的字节数量为1,则考试科目字段对应的字节数量的总位数为8。
假设,字段值语文对应的二进制数值为0;字段值数学对应的二进制数值为1;字段值英语对应的二进制数值为10;字段值物理对应的二进制数值为11;字段值化学对应的二进制数值为100;字段值生物对应的二进制数值为101;字段值地理对应的二进制数值为110;字段值历史对应的二进制数值为111;字段值政治对应的二进制数值为1000。
则电子设备执行上述步骤S203,可以得到考试科目字段中各个字段值的编码值如下:
字段值语文的编码值为00000000;字段值数学的编码值为00000001;字段值英语的编码值为00000010;字段值物理的编码值为00000011;字段值化学的编码值为00000100;字段值生物的编码值为00000101;字段值地理的编码值为00000110;字段值历史的编码值为00000111;字段值政治的编码值为00001000。
相对于本具体实现方式所提供的关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,在对该字段的各个字段值进行解码时,电子设备首先确定待解码的编码值,进而,便可以根据关于该字段的各个字段值与编码值的对应关系确定待解码的编码值对应的字段值。具体的:
电子设备可以首先确定待解码的编码值所对应的数字编号,进而根据在确定关于该字段的各个字段值与编码值的对应关系时,为该字段的各个字段值分配的数字编号,确定待解码的编码值所对应的数字编号对应的字段值,则该字段值即为上述待解码的编码值对应的字段值。
下面,对电子设备执行上述步骤S104,将各个字符组的编码值进行组合,得到字符串的编码值的方式进行举例介绍。
可选的,一种具体实现方式中,如图3所示,电子设备执行上述步骤S104的方式可以包括如下步骤:
S301:判断各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果存在,执行步骤S302;
由于电子设备是按照字段将字符串拆分为多个字符组的,因此,电子设备可以确定每个字符组所属字段的类型。基于此,在得到每个字符组的编码值后,电子设备便判断各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型。
当电子设备判断得到各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型时,电子设备便可以继续执行后续步骤S302;
相对应的,当电子设备判断得到各个字符组中不存在位置连续的至少两个字符组所属字段均为字段值可控的类型时,电子设备便可以按照各个字符组在上述待存储的字符串中的位置关系,依次排列各个字符组的编码值,并将排列完成所形成的编码值确定为字符串的编码值;当前,当电子设备判断得到各个字符组中不存在位置连续的至少两个字符组所属字段均为字段值可控的类型时,电子设备也可以采用其他方式,将各个字符组的编码值进行组合,得到字符串的编码值,这都是合理的。
S302:获得至少两个字符组中,每个字符组所属字段对应的最大位数;
其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
在上述图2所示的一种关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式的具体实现方式中,针对任一字段值可控的字段,电子设备可以基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量。
同样,电子设备也可以基于该字段值可控的字段下的字段值的数量,确定该字段对应的最大位数。
可以理解的,当该字段值可控的字段下的一字段值的数字编码对应的二进制数值的位数不能够占满该字段值可控的字段对应的字节数量的数量时,那么在该字段值的编码值中,该编码之中从最高位至从高位起第一个1所在的位置之间会存在至少一个零。
显然,该字段值可控的字段下的字段值中,数字编码最大的字段值所对应的二进制数值的位数最多,即在该字段值的编码值中从最高位至从高位起第一个1所在的位置之间所存在的零的数量最小。这样,电子设备便可以将该字段值可控的字段下的字段值中,数字编码最大的字段值所对应的二进制数值的位数确定为该字段值可控的字段对应的最大位数。
也就是说,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值。
S303:计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
在判断得到各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且得到所确定的至少两个字符组中,每个字符组所属字段对应的最大位数时,电子设备便可以计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数。
以字符串为张三男数学为例,电子设备按照字段对该字符串进行拆分可以得到姓名字段下的字段值张三,性别字段下的字段值男,以及科目字段下的字段值数学。其中,姓名字段的类型为字段值不可控字段,性别字段和科目字段均为字段值可控字段,而进一步的,由于男数学是位置连续的两个字符组,则电子设备执行执行上述步骤S301的判断结果为:各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且该位置连续的至少两个字符组为男和数学。
进而,假设性别字段对应的最大位数为1,科目字段对应的最大位数为4,则电子设备可以计算得到字段值男所属性别字段的最大位数和字段值数学所属科目字段的最大位数的和值为1+4=5,进而,确定该和值所占用的目标字节数为1。
S304:判断目标字节数是否小于至少两个字符组的编码值所占用字节的数量之和;如果是,执行步骤S305。
在执行完上述步骤S303,在确定目标字节数后,电子设备便可以计算至少两个字符组的编码值所占用字节的数量之和,并判断上述所确定的目标字节数是否小于至少两个字符组的编码值所占用字节的数量之和。
当上述判断结果为是时,说明如果将上述所确定的位置连续的至少两个字符组的编码值进行拼接,那么,拼接得到的新的编码值所占用的字节的数量小于上述所确定的位置连续的至少两个字符组的编码值所占用字节的数量之和。这样,如果将拼接后的新的编码值作为一个整体用来表征上述所确定的位置连续的至少两个字符组,则相较于存储上述所确定的位置连续的至少两个字符组的编码值,电子设备存储该拼接后的新的编码值,可以进一步的节省存储空间。基于此,当上述判断结果为是时,电子设备便可以继续执行后续步骤S305。
相对应的,当上述判断结果为否时,说明如果将上述所确定的位置连续的至少两个字符组的编码值进行拼接,那么,拼接得到的新的编码值所占用的字节的数量不小于上述所确定的位置连续的至少两个字符组的编码值所占用字节的数量之和。这样,如果将拼接后的新的编码值作为一个整体用来表征上述所确定的位置连续的至少两个字符组,相较于存储上述所确定的位置连续的至少两个字符组的编码值,电子设备存储该拼接后的新的编码值,并不能节省存储空间,而是可能会占用更多的存储空间。基于此,当上述判断结果为否时,电子设备便可以按照各个字符组在上述待存储的字符串中的位置关系,依次排列各个字符组的编码值,并将排列完成所形成的编码值确定为字符串的编码值;当前,当上述判断结果为否时,电子设备也可以采用其他方式,将各个字符组的编码值进行组合,得到字符串的编码值,这都是合理的。
以字符串为张三男数学为例,电子设备在执行上述步骤S301时,可以确定各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且该位置连续的至少两个字符组为男和数学。
进一步的,电子设备在执行上述步骤S302时,可以确定性别字段对应的最大位数为1,科目字段对应的最大位数为4;
再进一步的,电子设备在执行上述步骤S303时,可以确定目标字节数为1。
而由于字段值男的编码值和字段值数学的编码值所占用的字节的数量之和为2,显然,在执行上述步骤S304时,电子设备的判断结果为是,因此,电子设备可以继续执行后续的步骤S305。
S305:基于每个字符组所属字段对应的最大位数和目标字节数,利用位运算对至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
S306:将拼接结果和除至少两个字符组以外的字符组的编码值进行组合,得到字符串的编码值。
在判断得到目标字节数小于至少两个字符组的编码值所占用字节的数量之和,电子设备便可以基于每个字符组所属字段对应的最大位数和目标字节数,利用位运算对至少两个字符组的编码值进行拼接,得到拼接结果;并将拼接结果和除至少两个字符组以外的字符组的编码值进行组合,得到字符串的编码值。
相对于本具体实现方式所提供的一种电子设备执行上述步骤S104,将各个字符组的编码值进行组合,得到字符串的编码值的方式,在对待解码的编码值进行解码,得到字符串中的各个字符时,电子设备可以根据所记录的上述待解码的编码值的编码过程,确定上述待解码的编码值拼接得到的编码值,进而,根据所记录的编码过程中的位运算,确定与该位运算的逆运算,从而得到上述待解码的编码值拼接得到的编码值对应的各个编码值,即确定上述待解码的编码值拼接得到的编码值是由哪几个编码值拼接得到的。进而,便可以对上述待解码的编码值拼接得到的编码值对应的各个编码值进行解码,从而得到上述待解码的编码值拼接得到的编码值所对应的各个字符组,并对上述待解码的编码值中的其他编码值进行解码。这样,电子设备便可以得到上述待解码的编码值对应的字符串中的各个字符。
其中,电子设备可以通过多种方式执行上述步骤S304,对此,本发明实施例不做具体限定。为了行文清晰,后续将会对电子设备执行上述步骤S304的方式进行举例说明。
此外,可选的,一种具体实现方式中,当各个字符组中至少两个字符组所属字段均为字段值可控的类型,然而上述至少两个字符组所属字段的位置并不连续时,电子设备也可以执行上述步骤S302-S305,得到字符串的编码值。其中,在该具体实现方式中,电子设备需要记录上述至少两个字符组所属字段的位置以及上述至少两个字符组所对应的编码值与电子设备执行上述步骤S304时得到的拼接结果的对应关系,以便于电子设备在对该字符串的编码值进行解码时,可以根据所记录的上述位置和对应关系,得到该字符串。
下面,对电子设备执行上述步骤S304,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的方式进行举例说明。
可选的,一种具体实现方式中,电子设备执行上述步骤S304的方式可以包括如下步骤:
S401:针对至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组;
其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
在判断得到目标字节数小于至少两个字符组的编码值所占用字节的数量之和时,针对所述至少两个字符组中每一个字符组,电子设备便可以从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组。这样,电子设备便可以得到多个待拼接数组。
以字符串为张三男数学为例,电子设备在执行上述步骤S301时,可以确定各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且该位置连续的至少两个字符组为男和数学。
进一步的,假设性别字段对应的最大位数为1,科目字段对应的最大位数为4;且男的编码值为00000000;数学的编码值为00000001,因此,可以确定目标字节数为1。
而由于字段值男的编码值和字段值数学的编码值所占用的字节的数量之和为2,显然,在执行上述步骤S304时,电子设备的判断结果为是。
这样,电子设备可以从字段值男的编码值中获取字段值男对应的待拼接数组为0,并从字段值数学的编码值中获取字段值数学对应的待拼接数组为0001。
S402:按照至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;
在执行完上述步骤S401,得到针对至少两个字符组中每一个字符组对应的待拼接数组后,电子设备便可以按照至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果。
以字符串为张三男历史为例,电子设备在执行上述步骤S301时,可以确定各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且该位置连续的至少两个字符组为男和历史。
进一步的,假设性别字段对应的最大位数为1,科目字段对应的最大位数为4;且男的编码值为00000000;历史的编码值为00000111,因此,可以确定目标字节数为1。
而由于字段值男的编码值和字段值历史的编码值所占用的字节的数量之和为2,显然,在执行上述步骤S304时,电子设备的判断结果为是。
这样,电子设备可以从字段值男的编码值中获取字段值男对应的待拼接数组为0,并从字段值历史的编码值中获取字段值数学对应的待拼接数组为0111。
进而,电子设备便可以按照男和历史在上述字符串张三男历史中的位置关系,通过位或(|)运算,对字段值男对应的待拼接数组0和字段值历史对应的待拼接数组0111进行拼接,得到初始结果00111。
S403:基于目标字节数,对初始结果进行二进制编码,得到拼接结果。
与上述对步骤S203的介绍相同的,由于在计算机技术中,是以字节作为计算机存储容量的一种计量单位的,因此,每个字段值的编码值,需要占满至少一个字节的全部位数。而在本发明实施例中,属于同一字段值可控字段的各个字段值所要占满的字节数量相同。
基于此,针对在上述步骤S402中得到的初始结果,在对该初始结果进行编码时,需要保证该初始结果的编码值占满上述所确定的目标字节数个字节所包括的全部位数。
因此,在得到初始结果后,电子设备可以基于目标字节数,对初始结果进行二进制编码,得到拼接结果。
以字符串为张三男历史为例,电子设备在执行上述步骤S301时,可以确定各个字符组中存在位置连续的至少两个字符组所属字段均为字段值可控的类型,且该位置连续的至少两个字符组为男和历史。
进一步的,假设性别字段对应的最大位数为1,科目字段对应的最大位数为4;且男的编码值为00000000;历史的编码值为00000111,因此,可以确定目标字节数为1。
而由于字段值男的编码值和字段值历史的编码值所占用的字节的数量之和为2,显然,在执行上述步骤S304时,电子设备的判断结果为是。
这样,电子设备可以从字段值男的编码值中获取字段值男对应的待拼接数组为0,并从字段值历史的编码值中获取字段值数学对应的待拼接数组为0111。
进而,电子设备便可以按照男和历史在上述字符串张三男历史中的位置关系,通过位或(|)运算,对字段值男对应的待拼接数组0和字段值历史对应的待拼接数组0111进行拼接,得到初始结果00111。
由于目标字节数为1,因此初始结果的编码值应该占满8位。基于此,电子设备可以基于目标字节数1,对上述初始结果00111进行二进制编码,得到拼接结果为00000111。
相应于上述本发明实施例提供的一种字符串存储方法,本发明实施例还提供了一种字符串存储装置。
图5为本发明实施例提供的一种字符串存储装置的结构示意图。如图5所示,该装置包括:
字符串获取模块510,用于获得待存储的字符串,其中,字符串是由多个字段下的字段值构成的;
字符串拆分模块520,用于将字符串按照字段拆分为多个字符组;
字符组编码模块530,用于针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
编码值组合模块540,用于将各个字符组的编码值进行组合,得到字符串的编码值;
编码存储模块550,用于存储字符串的编码值。
以上可见,应用本发明实施例提供的方案,在存储由多个字段下的字段值构成的字符串时,可以按照字段将该字符串拆分为多个字符组,从而根据每个字符组所属字段对应的编码方式,对该字符组进行编码。进而,将每个字符组的编码值进行组合,得到该字符串的编码值并进行存储。其中,由于对于属于字段值可控的字段的字符组,是根据该字段的各个字段值与编码值的对应关系确定该字符组的编码值的,而该字段中每一字段值的编码值是基于该字段值的预定数字编号生成的,因此,在本发明实施例提供的方案中,所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数。基于此,应用本发明实施例提供的方案,在存储字符串时,可以节省存储空间。
可选的,一种具体实现方式中,上述字符组编码模块530可以具体用于:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
可选的,一种具体实现方式中,上述字符串存储装置还可以包括:
关系确定模块,用于关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式;关系确定模块包括:
编号分配子模块,用于为该字段值可控的字段的各个字段值分配一个数字编号;
字节数量确定子模块,用于基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
编号子模块,用于针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
可选的,一种具体实现方式中,上述编码值组合模块540可以包括:
字符组判断子模块,用于判断各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果是,触发位数获取子模块;
位数获取子模块,用于获得至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
目标字节数计算子模块,用于计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
数值判断子模块,用于判断目标字节数是否小于至少两个字符组的编码值所占用字节的数量之和,如果是,触发编码值拼接子模块;
编码值拼接子模块,用于基于每个字符组所属字段对应的最大位数和目标字节数,利用位运算对至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
编码值组合子模块,用于将拼接结果和除至少两个字符组以外的字符组的编码值进行组合,得到字符串的编码值。
可选的,一种具体实现方式中,上述编码值拼接子模块可以具体用于:
针对至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;按照至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于目标字节数,对初始结果进行二进制编码,得到拼接结果。
相应于上述本发明实施例提供的一种字符串存储方法,发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现上述本发明实施例提供的一种字符串存储方法。
具体的,上述字符串存储方法,包括:
获得待存储的字符串,其中,字符串是由多个字段下的字段值构成的;
将字符串按照字段拆分为多个字符组;
针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
将各个字符组的编码值进行组合,得到字符串的编码值;
存储字符串的编码值。
需要说明的是,上述处理器601执行存储器603上存放的程序而实现的一种字符串存储方法的其他实现方式,与前述方法实施例部分提供的一种字符串存储方法实施例相同,这里不再赘述。
以上可见,应用本发明实施例提供的方案,在存储由多个字段下的字段值构成的字符串时,可以按照字段将该字符串拆分为多个字符组,从而根据每个字符组所属字段对应的编码方式,对该字符组进行编码。进而,将每个字符组的编码值进行组合,得到该字符串的编码值并进行存储。其中,由于对于属于字段值可控的字段的字符组,是根据该字段的各个字段值与编码值的对应关系确定该字符组的编码值的,而该字段中每一字段值的编码值是基于该字段值的预定数字编号生成的,因此,在本发明实施例提供的方案中,所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数。基于此,应用本发明实施例提供的方案,在存储字符串时,可以节省存储空间。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
相应于上述本发明实施例提供的一种字符串存储方法,本发明实施例还提供了一种计算机可读存储介质,该计算机程序被处理器执行时实现上述本发明实施例提供的一种字符串存储方法。
具体的,上述字符串存储方法,包括:
获得待存储的字符串,其中,字符串是由多个字段下的字段值构成的;
将字符串按照字段拆分为多个字符组;
针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
将各个字符组的编码值进行组合,得到字符串的编码值;
存储字符串的编码值。
需要说明的是,上述计算机程序被处理器执行时而实现的一种字符串存储方法的其他实现方式,与前述方法实施例部分提供的一种字符串存储方法实施例相同,这里不再赘述。
以上可见,应用本发明实施例提供的方案,在存储由多个字段下的字段值构成的字符串时,可以按照字段将该字符串拆分为多个字符组,从而根据每个字符组所属字段对应的编码方式,对该字符组进行编码。进而,将每个字符组的编码值进行组合,得到该字符串的编码值并进行存储。其中,由于对于属于字段值可控的字段的字符组,是根据该字段的各个字段值与编码值的对应关系确定该字符组的编码值的,而该字段中每一字段值的编码值是基于该字段值的预定数字编号生成的,因此,在本发明实施例提供的方案中,所得到的属于字段值可控的字段的字符组的编码值所占用的字节数小于对该字符组中的各个字符进行逐字编码所得到该字符组的编码值所占用的字节数。基于此,应用本发明实施例提供的方案,在存储字符串时,可以节省存储空间。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例、电子设备实施例、计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种字符串存储方法,其特征在于,所述方法包括:
获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
将所述字符串按照字段拆分为多个字符组;
针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
将各个字符组的编码值进行组合,得到所述字符串的编码值;
存储所述字符串的编码值;
所述将各个字符组的编码值进行组合,得到所述字符串的编码值的步骤,包括:
判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;
如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;
如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。
2.根据权利要求1所述的方法,其特征在于,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
3.根据权利要求1或2所述的方法,其特征在于,关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:
为该字段值可控的字段的各个字段值分配一个数字编号;
基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
4.根据权利要求1所述的方法,其特征在于,所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;
基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
5.一种字符串存储装置,其特征在于,所述装置包括:
字符串获取模块,用于获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
字符串拆分模块,用于将所述字符串按照字段拆分为多个字符组;
字符组编码模块,用于针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
编码值组合模块,用于将各个字符组的编码值进行组合,得到所述字符串的编码值;
编码存储模块,用于存储所述字符串的编码值;
所述编码值组合模块包括:
字符组判断子模块,用于判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果是,触发位数获取子模块;
所述位数获取子模块,用于获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
目标字节数计算子模块,用于计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
数值判断子模块,用于判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和,如果是,触发编码值拼接子模块;
所述编码值拼接子模块,用于基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
编码值组合子模块,用于将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。
6.根据权利要求5所述的装置,其特征在于,所述字符组编码模块具体用于:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。
7.根据权利要求5或6所述的装置,其特征在于,所述装置还包括:
关系确定模块,用于关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式;所述关系确定模块包括:
编号分配子模块,用于为该字段值可控的字段的各个字段值分配一个数字编号;
字节数量确定子模块,用于基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
编号子模块,用于针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。
8.根据权利要求5所述的装置,其特征在于,所述编码值拼接子模块具体用于:
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-4任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-4任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910561225.7A CN112232025B (zh) | 2019-06-26 | 2019-06-26 | 一种字符串存储方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910561225.7A CN112232025B (zh) | 2019-06-26 | 2019-06-26 | 一种字符串存储方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112232025A CN112232025A (zh) | 2021-01-15 |
CN112232025B true CN112232025B (zh) | 2023-11-03 |
Family
ID=74110916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910561225.7A Active CN112232025B (zh) | 2019-06-26 | 2019-06-26 | 一种字符串存储方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112232025B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115276889B (zh) * | 2021-04-29 | 2024-09-24 | 腾讯科技(深圳)有限公司 | 解码处理方法、装置、计算机设备及存储介质 |
CN113468855A (zh) * | 2021-06-30 | 2021-10-01 | 北京达佳互联信息技术有限公司 | 一种数据处理方法、装置、服务器及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7592930B1 (en) * | 2008-05-13 | 2009-09-22 | Google Inc. | Method and apparatus for reducing memory usage by encoding two values in a single field |
CN101976241A (zh) * | 2010-09-26 | 2011-02-16 | 用友软件股份有限公司 | 识别码生成方法和系统 |
CN106407201A (zh) * | 2015-07-29 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN108268658A (zh) * | 2018-02-06 | 2018-07-10 | 政采云有限公司 | 基于MySQL数据库的大文本字段存储方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10090857B2 (en) * | 2010-04-26 | 2018-10-02 | Samsung Electronics Co., Ltd. | Method and apparatus for compressing genetic data |
CN106777292B (zh) * | 2016-12-29 | 2019-11-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据序列化方法及装置 |
CN108256017B (zh) * | 2018-01-08 | 2020-12-15 | 武汉斗鱼网络科技有限公司 | 一种用于数据存储的方法、装置及计算机设备 |
-
2019
- 2019-06-26 CN CN201910561225.7A patent/CN112232025B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7592930B1 (en) * | 2008-05-13 | 2009-09-22 | Google Inc. | Method and apparatus for reducing memory usage by encoding two values in a single field |
CN101976241A (zh) * | 2010-09-26 | 2011-02-16 | 用友软件股份有限公司 | 识别码生成方法和系统 |
CN106407201A (zh) * | 2015-07-29 | 2017-02-15 | 腾讯科技(深圳)有限公司 | 一种数据处理方法及装置 |
CN107832345A (zh) * | 2017-10-16 | 2018-03-23 | 千寻位置网络有限公司 | 基站数据唯一数字化标识的方法 |
CN108268658A (zh) * | 2018-02-06 | 2018-07-10 | 政采云有限公司 | 基于MySQL数据库的大文本字段存储方法和系统 |
Non-Patent Citations (3)
Title |
---|
Adaptive String Dictionary Compression in In-Memory Column-Store Database System;Ingo Müller,Cornelius Ratsch等;open proceedings;全文 * |
VB6.0中Unicode编码问题的灵活处理及妙用;杨红卫, 吴星, 毛;电脑与信息技术(第05期);全文 * |
二维编解码技术研究与应用;李媛;李红星;张益农;;北京联合大学学报(自然科学版)(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112232025A (zh) | 2021-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112711935B (zh) | 编码方法、解码方法、装置及计算机可读存储介质 | |
CN109194337B (zh) | 一种Polar码编码方法、装置 | |
CN104579360B (zh) | 一种数据处理的方法和设备 | |
CN107592116B (zh) | 一种数据压缩方法、装置及存储介质 | |
KR102535450B1 (ko) | 데이터 저장 방법 및 장치, 및 그 컴퓨터 디바이스 및 저장 매체 | |
US11178212B2 (en) | Compressing and transmitting structured information | |
CN102750268A (zh) | 一种对象序列化方法、对象反序列化方法、装置及系统 | |
CN112232025B (zh) | 一种字符串存储方法、装置及电子设备 | |
EP3367254A1 (en) | Method and apparatus for generating random character string | |
CN109582231B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN114840861A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN114499743A (zh) | 通信数据的处理方法、装置、设备及存储介质 | |
WO2015116762A1 (en) | Optimized data condenser and method | |
WO2022072802A1 (en) | Systems and methods for lossless compression of tabular numeric data | |
CN113222156B (zh) | 一种待执行操作的量子模拟方法、装置 | |
CN112395880A (zh) | 结构化三元组的纠错方法、装置、计算机设备及存储介质 | |
CN114928363A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115203600A (zh) | 一种短链接的生成方法、装置、设备及介质 | |
CN115061637A (zh) | 磁盘数据索引方法、装置、计算机设备及存储介质 | |
CN115544979A (zh) | 一种行政地址提取方法、装置和设备及存储介质 | |
CN109117648B (zh) | 数据库浮点数据加密方法 | |
CN111178008A (zh) | 一种面向数字字符的数据编码方法、解析方法及系统 | |
CN113688601B (zh) | 基于表单的水印生成方法、装置、电子设备和计算机介质 | |
CN115617392B (zh) | 一种版本号的确定方法及装置 | |
CN113434632B (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 |