CN110569487B - 一种基于高频率字符替代算法的Base64扩展编码方法及系统 - Google Patents
一种基于高频率字符替代算法的Base64扩展编码方法及系统 Download PDFInfo
- Publication number
- CN110569487B CN110569487B CN201910762390.9A CN201910762390A CN110569487B CN 110569487 B CN110569487 B CN 110569487B CN 201910762390 A CN201910762390 A CN 201910762390A CN 110569487 B CN110569487 B CN 110569487B
- Authority
- CN
- China
- Prior art keywords
- character
- frequency
- high frequency
- characters
- bit
- 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
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供了一种基于高频率字符替代算法的Base64扩展编码方法及系统,本发明在原Base64转码扩充比例为1/3的基础上,采用高频替换字符,如果按照40%替换率计算,扩充比例为20%,远小于33.3%的扩充比,这对于大数据量的数据转码,可大大提高转换的经济性,有效节省扩充空间;本发明改变Base64编码移位转码的方法,采用D*64+d的算法进行转换,使得每个编码与其他码无关,不会造成因异常而导致后续码不能恢复的现象;本发明转换范围覆盖全部的ASCII数据域,适用于各种应用下的二进制数据转码,并且本发明仅涉及一种转换算法,与实现的语言、平台无关,兼容性好;本发明不需要进行结尾补码,算法更加简洁。
Description
技术领域
本发明涉及字符编码技术领域,特别是一种基于高频率字符替代算法的Base64扩展编码方法及系统。
背景技术
众所周知,计算机中任何数据都是按照二进制数据存储和计算的,为方便网络上不同主机之间进行信息交换,统一采用ASCII编码。ASCII码的0-31之间以及127的值是不可见字符。而在网络上交换数据时往往要经过多个路由设备,由于不同设备对字符的处理方式不同,那些不可见字符就有可能被错误处理,而不利于传输。
在日常应用中也会遇到这样的问题,有些应用场景仅适用ASCII码的可打印字符,例如传统的邮件系统,ASCII码的控制字符就不能通过邮件传送。因此受到很大的限制,例如图片二进制流的每个字节不可能全部都是可见字符,从而无法传送图片。
改变上述问题最好的办法就是在不改变传统协议的情况下,开辟一种新的编码方案来支持二进制文件的传送,把不可见字符用可见字符来表示。Base64编码为一种基于64个可见字符来表示二进制数据的表示方法,其虽然可以将二进制数据转码为可见字符,但存在以下不足:
1.最终编码将增加1/3,源码数量越大转换后所占空间越大,对于大数量的数据转码,其效率不高将是一个不可忽视的重大缺陷;
2.采用逐码位移的算法,一旦出现错误将造成同单元后续编码还原失败;
3.对于源码数量不是3的整数倍时需要增加结尾补码“=”。
发明内容
本发明的目的是提供一种基于高频率字符替代算法的Base64扩展编码方法及系统,旨在解决现有技术中采用Base64编码时编码增加造成占用空间大、效率低的问题,实现有效节省扩充空间,提高转换效率。
为达到上述技术目的,本发明提供了一种基于高频率字符替代算法的Base64扩展编码方法,所述方法包括以下步骤:
S1、遍历待转换二进制字符源码获取高频字符表;
S2、对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
S3、对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分。
优选地,所述按照D*64+d算法进行转换具体操作如下:
增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,字符K的第4、3位填充第二个非高频字符的D,字符K的第2、1位填充第三个非高频字符的D;
第一个非高频字符替换为该字符的d,第二个非高频字符替换为该字符的d,第三个非高频字符替换为该字符的d。
优选地,所述遍历待转换二进制字符源码获取高频字符表具体操作如下:
每个字符出现的频率为1/256,则每个字符出现的平均次数为全部源码数量/256;
设定出现频率超过平均次数的三倍即为高频字符;
如果得到高频字符的数量达到所需数量,则停止遍历全部源码,否则遍历全部字符,按照出现频率选取高频字符。
优选地,当最后一组二进制源码个数不足3时,空缺字符的整数D固定为二进制00,无余数字节。
本发明还提供了一种基于高频率字符替代算法的Base64扩展编码系统,所述系统包括:
高频字符获取模块,用于遍历待转换二进制字符源码获取高频字符表;
高频字符替换模块,用于对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
非高频字符扩展模块,用于对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分。
优选地,所述非高频字符扩展模块包括:
扩展字符填充单元,用于以三个非高频字符为一组进行扩充,增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,字符K的第4、3位填充第二个非高频字符的D,字符K的第2、1位填充第三个非高频字符的D;
原非高频字符替换单元,用于第一个非高频字符替换为该字符的d,第二个非高频字符替换为该字符的d,第三个非高频字符替换为该字符的d;
映射单元,用于将转换后的非高频字符按照转换映射表进行映射。
优选地,所述高频字符获取模块包括:
高频字符确定单元,用于设定出现频率超过平均次数的三倍即为高频字符;
遍历单元,用于如果得到高频字符的数量达到所需数量,则停止遍历全部源码,否则遍历全部字符,按照出现频率选取高频字符。
优选地,当最后一组二进制源码个数不足3时,空缺字符的整数D固定为二进制00,无余数字节。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
与现有技术相比,本发明在原Base64转码扩充比例为1/3的基础上,采用高频替换字符,如果按照40%替换率计算,扩充比例为20%,远小于33.3%的扩充比,这对于大数据量的数据转码,可大大提高转换的经济性,有效节省扩充空间;本发明改变Base64编码移位转码的方法,采用D*64+d的算法进行转换,使得每个编码与其他码无关,不会造成因异常而导致后续码不能恢复的现象;本发明转换范围覆盖全部的ASCII数据域,适用于各种应用下的二进制数据转码,并且本发明仅涉及一种转换算法,与实现的语言、平台无关,兼容性好;本发明不需要进行结尾补码,算法更加简洁。
附图说明
图1为本发明实施例中所提供的一种基于高频率字符替代算法的Base64扩展编码方法流程图;
图2为本发明实施例中所提供的一种经过转换的二进制数据结构示意图;
图3为本发明实施例中所提供的一种基于高频率字符替代算法的Base64扩展编码系统框图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。下文的公开提供了许多不同的实施例或例子用来实现本发明的不同结构。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种基于高频率字符替代算法的Base64扩展编码方法及系统进行详细说明。
如图1所示,本发明实施例公开了一种基于高频率字符替代算法的Base64扩展编码方法,所述方法包括以下步骤:
S1、遍历待转换二进制字符源码获取高频字符表;
S2、对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
S3、对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分。
遍历待转换二进制字符源码生成高频率字符排列顺序,为尽快获取高频率字符表,可采用以下快捷算符:
每个字符出现的频率为1/256,因此每个字符出现的平均次数为:全部源码数量/256;
设定出现频率超过平均数量的三倍即为高频字符;
如果得到高频字符的数量达到所需数量,则停止遍历全部源码,否则遍历全部字符,按照出现频率选取高频字符。
对于高频字符,设置高频字符替代表,来替代高频率出现的字符,最大限度节约转码空间,替代字符可根据实际情况设置,但应除去可能引起歧义的字符,如表1所示。
表1
字符出现的频率 | 替代字符 |
最高出现频率的字符 | 0x23(#) |
次高出现频率的字符 | 0x24($) |
第三高频出现的字符 | 0x25(%) |
第四高频出现的字符 | 0x26(&) |
第五高频出现的字符 | 0x2D(-) |
第六高频出现的字符 | 0x5F(_) |
第七高频出现的字符 | 0x5B([) |
第八高频出现的字符 | 0x5C(]) |
第九高频出现的字符 | 0x7B(}) |
第十高频出现的字符 | 0x7D({) |
从待转换的二进制字符中取出一个字符,判断该字符是否为高频字符。若为高频字符,则按照高频字符替代表进行替换,非高频字符按照D*64+d算法进行转换,D是原数据对64相除的整数部分,d是原数据对64相除的余数部分。
以三个非高频字符作为一组进行扩充,增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,即第一个非高频字符对64相除的整数部分,字符K的第4、3位填充第二个非高频字符的D,即第二个非高频字符对64相除的整数部分,字符K的第2、1位填充第三个非高频字符的D,即第三个非高频字符对64相除的整数部分;第一个非高频字符替换为d,即第一个非高频字符对64相除的余数部分,第二个非高频字符替换为d,即第二个非高频字符对64相除的余数部分,第三个非高频字符替换为d,即第三个非高频字符对64相除的余数部分。
通过转换,每三个非高频字符(M1、M2、M3)转换完成后扩充为四个字符(C1、C2、C3、C4),C1字符为新增的字符,存放三个非高频字符的D,C2存放字符M1的数据d1,C3存放字符M2的数据d2,C4存放M3的数据d3。重复上述操作,直至全部二进制源码都完成转换,当最后一组二进制源码个数不足3个时,空缺字符的整数D固定为二进制00,无余数字节,如图2所示。
对于经过转换的非高频字符,按照映射表表2进行映射,转换为可打印字符。
表2
索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 | 索引 | 对应字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
本发明在原Base64转码扩充比例为1/3的基础上,采用高频替换字符,如果按照40%替换率计算,扩充比例为20%,远小于33.3%的扩充比,这对于大数据量的数据转码,可大大提高转换的经济性,有效节省扩充空间;本发明改变Base64编码移位转码的方法,采用D*64+d的算法进行转换,使得每个编码与其他码无关,不会造成因异常而导致后续码不能恢复的现象;本发明转换范围覆盖全部的ASCII数据域,适用于各种应用下的二进制数据转码,并且本发明仅涉及一种转换算法,与实现的语言、平台无关,兼容性好;本发明不需要进行结尾补码,算法更加简洁。
如图3所示,本发明实施例还公开了基于高频率字符替代算法的Base64扩展编码系统,所述系统包括:
高频字符获取模块,用于遍历待转换二进制字符源码获取高频字符表;
高频字符替换模块,用于对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
非高频字符扩展模块,用于对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分。
所述高频字符获取模块包括:
高频字符确定单元,用于设定出现频率超过平均次数的三倍即为高频字符;
遍历单元,用于如果得到高频字符的数量达到所需数量,则停止遍历全部源码,否则遍历全部字符,按照出现频率选取高频字符。
所述非高频字符扩展模块包括:
扩展字符填充单元,用于以三个非高频字符为一组进行扩充,增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,字符K的第4、3位填充第二个非高频字符的D,字符K的第2、1位填充第三个非高频字符的D;
原非高频字符替换单元,用于第一个非高频字符替换为该字符的d,第二个非高频字符替换为该字符的d,第三个非高频字符替换为该字符的d;
映射单元,用于将转换后的非高频字符按照转换映射表进行映射。
通过扩展编码,每三个非高频字符(M1、M2、M3)转换完成后扩充为四个字符(C1、C2、C3、C4),C1字符为新增的字符,存放三个非高频字符的D,C2存放字符M1的数据d1,C3存放字符M2的数据d2,C4存放M3的数据d3。重复上述操作,直至全部二进制源码都完成转换,当最后一组二进制源码个数不足3个时,空缺字符的整数D固定为二进制00,无余数字节。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于高频率字符替代算法的Base64扩展编码方法,其特征在于,所述方法包括以下步骤:
S1、遍历待转换二进制字符源码获取高频字符表;
S2、对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
S3、对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分;
所述按照D*64+d算法进行转换具体操作如下:
增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,字符K的第4、3位填充第二个非高频字符的D,字符K的第2、1位填充第三个非高频字符的D;第一个非高频字符替换为该字符的d,第二个非高频字符替换为该字符的d,第三个非高频字符替换为该字符的d;
所述高频字符的设定如下:
每个字符出现的频率为1/256,则每个字符出现的平均次数为全部源码数量/256;设定出现频率超过平均次数的三倍即为高频字符。
2.根据权利要求1所述的一种基于高频率字符替代算法的Base64扩展编码方法,其特征在于,当最后一组二进制源码个数不足3时,空缺字符的整数D固定为二进制00,无余数字节。
3.一种基于高频率字符替代算法的Base64扩展编码系统,其特征在于,所述系统包括:
高频字符获取模块,用于遍历待转换二进制字符源码获取高频字符表;
高频字符替换模块,用于对于待转换二进制字符中的高频字符,利用高频字符替代表进行替换;
非高频字符扩展模块,用于对于非高频字符,以三个非高频字符为一组进行扩充,按照D*64+d算法进行转换,并将转换后的非高频字符按照转换映射表进行映射,其中D为字符对64相除的整数部分,d为字符对64相除的余数部分;所述非高频字符扩展模块包括:
扩展字符填充单元,用于以三个非高频字符为一组进行扩充,增加一个字符K,初始化各位全部为0,字符K的第6、5位填充第一个非高频字符的D,字符K的第4、3位填充第二个非高频字符的D,字符K的第2、1位填充第三个非高频字符的D;
原非高频字符替换单元,用于第一个非高频字符替换为该字符的d,第二个非高频字符替换为该字符的d,第三个非高频字符替换为该字符的d;
映射单元,用于将转换后的非高频字符按照转换映射表进行映射;
所述高频字符的设定如下:
每个字符出现的频率为1/256,则每个字符出现的平均次数为全部源码数量/256;设定出现频率超过平均次数的三倍即为高频字符。
4.根据权利要求3所述的一种基于高频率字符替代算法的Base64扩展编码系统,其特征在于,当最后一组二进制源码个数不足3时,空缺字符的整数D固定为二进制00,无余数字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910762390.9A CN110569487B (zh) | 2019-08-19 | 2019-08-19 | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910762390.9A CN110569487B (zh) | 2019-08-19 | 2019-08-19 | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569487A CN110569487A (zh) | 2019-12-13 |
CN110569487B true CN110569487B (zh) | 2023-07-18 |
Family
ID=68775675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910762390.9A Active CN110569487B (zh) | 2019-08-19 | 2019-08-19 | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110569487B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113987556B (zh) * | 2021-12-24 | 2022-05-10 | 杭州趣链科技有限公司 | 数据处理方法和装置、电子设备、存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103684760B (zh) * | 2012-09-24 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 通信的加密和解密的方法、装置及系统 |
CN105450232A (zh) * | 2014-08-28 | 2016-03-30 | 华为技术有限公司 | 编码、解码方法以及编码装置和解码装置 |
CN105740215A (zh) * | 2016-01-23 | 2016-07-06 | 北京掌阔移动传媒科技有限公司 | 一种数据通信编码和解码方法 |
CN107919943B (zh) * | 2016-10-11 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 二进制数据的编码、解码方法和装置 |
-
2019
- 2019-08-19 CN CN201910762390.9A patent/CN110569487B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110569487A (zh) | 2019-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902274B (zh) | 一种将json字符串转化为thrift二进制流的方法及系统 | |
CN101841515B (zh) | 可变目标的协议数据单元编解码代码自动生成的实现方法 | |
US20110219357A1 (en) | Compressing source code written in a scripting language | |
US8224980B2 (en) | Adaptive parsing and compression of SOAP messages | |
CN100525450C (zh) | 一种实现霍夫曼译码的方法和装置 | |
JPH0830432A (ja) | データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置 | |
CN111629081A (zh) | 互联网协议ip地址数据处理方法、装置及电子设备 | |
US9529932B2 (en) | XML node labeling and querying using logical operators | |
CN104378117A (zh) | 数据压缩方法及装置、数据传输方法及系统 | |
CN101794318A (zh) | Url解析方法及设备 | |
CN106776639A (zh) | 基于结构化查询语言的数据处理方法及数据处理装置 | |
CN110569487B (zh) | 一种基于高频率字符替代算法的Base64扩展编码方法及系统 | |
CN105450712A (zh) | 一种数据传输方法及装置 | |
CN109446202A (zh) | 标识符分配方法、装置、服务器和存储介质 | |
CN103036641A (zh) | 数据交换方法、系统及反序列化方法 | |
CN101489128A (zh) | 一种jpeg2000流水线算术编码方法和电路 | |
CN111355820B (zh) | 一种数据传输方法、终端及电子设备 | |
CN103051480B (zh) | 一种dn的存储方法及dn存储装置 | |
CN114492316A (zh) | 数据交换编解码方法和系统 | |
CN111522899B (zh) | 一种三维矢量数据高压缩比的并行压缩方法及装置 | |
US7930435B2 (en) | Hub and spoke compression | |
CN111858103B (zh) | 软件系统内模块高低版本通信兼容实现方法 | |
CN114095036B (zh) | 一种动态哈夫曼编码的码长生成装置 | |
CN115167869A (zh) | 一种Java对象序列化和反序列化的方法、电子设备及介质 | |
CN105183750B (zh) | 紧凑式xml解析系统 |
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 |