一种字符串存储方法、装置及电子设备制造方法及图纸

技术编号:27060539 阅读:21 留言:0更新日期:2021-01-15 14:40
本发明专利技术实施例提供了一种字符串存储方法、装置及电子设备。该方法包括:获得待存储的字符串,其中,字符串是由多个字段下的字段值构成的;将字符串按照字段拆分为多个字符组;针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;将各个字符组的编码值进行组合,得到字符串的编码值;存储字符串的编码值。与现有技术相比,应用本发明专利技术实施例提供的方案,可以实现在存储字符串时,节省存储空间。

【技术实现步骤摘要】
一种字符串存储方法、装置及电子设备
本专利技术涉及字符编码
,特别是涉及一种字符串存储方法、装置及电子设备。
技术介绍
由于计算机中的信息存储、传输和加工是以二进制码(0和1)形式进行的,因此,在计算机技术中,在存储字符时,需要将字符编码成二进制表示的形式,进而存储该字符的二进制编码,即计算机在存储字符时,实际所存储的内容为该字符的二进制编码。当前,存在多种字符集,例如,ASCII(AmericanStandardCodeforInformationInterchange,美国信息互换标准代码)字符集、GB2312(信息交换用汉字编码)字符集、BIG5(大五码)字符集、Unicode(万国码)字符集等。其中,每个字符集根据对应的字符编码方式,定义了各个字符与二进制编码之间的一种对应关系。由于在计算机技术中使用字节作为计算存储容量的一种计量单位,因此,在当前的各种字符编码方式中,当一个字符所对应的二进制数值的位数不能占满至少一个字节中的全部位数时,会在该二进制数值的高位补零,从而将补零后得到的二进制数值作为该字符的二进制编码。显然,在对该字符的二进制编码进行存储时,会造成存储空间的浪费。以utf-8(8-bitUnicodeTransformationFormat)编码方式为例,该编码方式所得到的二进制编码是以8位为一个编码单位的可变长编码。例如,汉字“严”对应的unicode码是\u4e25,使用utf-8编码时,汉字“严”对应的二进制数值为100111000100101,由于100111000100101的位数超过8位,不足16位,因此需要在100111000100101的高位补零,得到汉字“严”对应的二进制编码为0100111000100101,在传输和存储中需占用两个个字节。显然,在该utf-8编码方式中,计算机在存储汉字“严”时浪费了两位空间。基于此,在相关技术中,计算机在对字符串进行存储时,需要首先根据所选定的字符集,对待编码的字符串逐字进行编码。进而,存储所得到的字符串的二进制编码。显然,由于在存储字符串中每个字符时可能存在存储空间浪费的情况,因此,在存储字符串时,可能浪费更多存储空间。
技术实现思路
本专利技术实施例的目的在于提供一种字符串存储方法、装置、电子设备及可读存储介质,以实现在存储字符串时,节省存储空间。具体技术方案如下:第一方面,本专利技术实施例提供了一种字符串存储方法,所述方法包括:获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;将所述字符串按照字段拆分为多个字符组;针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;将各个字符组的编码值进行组合,得到所述字符串的编码值;存储所述字符串的编码值。可选的,一种具体实现方式中,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。可选的,一种具体实现方式中,关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:为该字段值可控的字段的各个字段值分配一个数字编号;基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。可选的,一种具体实现方式中,所述将各个字符组的编码值进行组合,得到所述字符串的编码值的步骤,包括:判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。可选的,一种具体实现方式中,所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。第二方面,本专利技术实施例提供了一种字符串存储装置,所述装置包括:字符串获取模块,用于获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;字符串拆分模块,用于将所述字符串按照字段拆分为多个字符组;字符组编码模块,用于针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;编码值组合模块,用于将各个字符组的编码值进行组合,得到所述字符串的编码值;编码存储模块,用于存储所述字符串的编码值。可选的,一种具体实现方式中,所述字符组编码模块具体用于:针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。可选的,一种具体实现方式中,所述装置还包括:关系确定模块,用于关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式;所述关系确定模块包括:编号分配子模块,用于为该字段值可控的字段的各个字段值分配一个数字编号;...

【技术保护点】
1.一种字符串存储方法,其特征在于,所述方法包括:/n获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;/n将所述字符串按照字段拆分为多个字符组;/n针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;/n将各个字符组的编码值进行组合,得到所述字符串的编码值;/n存储所述字符串的编码值。/n

【技术特征摘要】
1.一种字符串存储方法,其特征在于,所述方法包括:
获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
将所述字符串按照字段拆分为多个字符组;
针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值;其中,每一字段值可控的字段对应的编码方式为:利用关于该字段的各个字段值与编码值的对应关系进行编码的方式;每一字段值的编码值是基于该字段值的预定数字编号生成的;
将各个字符组的编码值进行组合,得到所述字符串的编码值;
存储所述字符串的编码值。


2.根据权利要求1所述的方法,其特征在于,所述针对每个字符组,按照与该字符组所属字段对应的编码方式,对该字符组进行编码,得到该字符组的编码值的步骤,包括:
针对每个字符组,如果该字符组所属字段为字段值可控的类型,利用关于该字符组所属字段的各个字段值与编码值的对应关系,对该字符组进行编码,得到该字符组的编码值;如果该字符组所属字段为字段值不可控的类型,对该字符组中的各个字符进行逐字编码,得到该字符组的编码值。


3.根据权利要求1或2所述的方法,其特征在于,关于任一字段值可控的字段的各个字段值与编码值的对应关系的确定方式,包括:
为该字段值可控的字段的各个字段值分配一个数字编号;
基于该字段值可控的字段下的字段值的数量,确定该字段值可控的字段对应的字节数量;
针对该字段值可控的字段下的每个字段值,基于所确定的该字段值可控的字段对应的字节数量字节数量,对该字段值的数字编号进行二进制编码,得到该字段值的编码值。


4.根据权利要求1所述的方法,其特征在于,所述将各个字符组的编码值进行组合,得到所述字符串的编码值的步骤,包括:
判断所述各个字符组中是否存在位置连续的至少两个字符组所属字段均为字段值可控的类型;
如果存在,获得所述至少两个字符组中,每个字符组所属字段对应的最大位数;其中,任一字段对应的最大位数为:该字段的各个字段值的编码值中从高位起第一个1所在的位置至最低位的位数中的最大值;
计算所获得的每个字符组所属字段对应的最大位数的和值,并确定计算得到的和值所占用的目标字节数;
判断所述目标字节数是否小于所述至少两个字符组的编码值所占用字节的数量之和;
如果是,基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果;
将所述拼接结果和除所述至少两个字符组以外的字符组的编码值进行组合,得到所述字符串的编码值。


5.根据权利要求4所述的方法,其特征在于,所述基于所述每个字符组所属字段对应的最大位数和所述目标字节数,利用位运算对所述至少两个字符组的编码值的编码值进行拼接,得到拼接结果的步骤,包括:
针对所述至少两个字符组中每一个字符组,从该字符组的编码值的最低位开始,获取该字符组的编码值中目标数量个数字,作为待拼接数组,其中,任一字符组对应的目标数量为:该字符组所属字段对应的最大位数;
按照所述至少两个字符组的位置关系,利用位运算拼接所获取的每个待拼接数组,得到初始结果;
基于所述目标字节数,对所述初始结果进行二进制编码,得到拼接结果。


6.一种字符串存储装置,其特征在于,所述装置包括:
字符串获取模块,用于获得待存储的字符串,其中,所述字符串是由多个字段下的字段值构成的;
字符串拆分模块,用于将所述字符串按照字段拆分为多个字符组;
字符组编码模块,用于针对每个字符组,按照与该字符组所属字段对应的...

【专利技术属性】
技术研发人员:徐乾龙
申请(专利权)人:杭州海康威视数字技术股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利