更新时间:2019年07月26日 10时52分50秒 来源:黑马程序员论坛
前言相信超过绝大多少的程序员都曾在各种的软件开发中使用过编码、解码,编码和解码是对应的,有编码就有解码。base16,base32,base64 都是编码方式,对应有各自的一套编码算法。 但是有人经常称它们是加密,例如 base64 加密。其实这种说法不算全对。因为默认的 base16,base32,base64 的各种信息都是公开的,公开的包含有:
16,32和64它们编码原理都是一样的,不同的地方在于下面 2 东西:
首先我们知道数据类型 char 一般占2个字节,当然还有二般的情况,比如1个字节,但这里我们以2字节为例,例如: char r = 'a',那么如果这种规则被修改了呢,既然可以使用2个字节表示一个字符,那么为什么不可以用3字节,5字节表示?当我们其它的字节个数表示一个字符的时候,就会产生其它效果。而,上述的第一点就是类似这个意思。当代表下标的 bit 位的个数变了,下标的取值范围也跟着变,比如 2 个 bit 位最大的数是 11 = 3,而 3 个 bit 位最大的数是 111 = 7 。 对于第二点来说,就是一个用来供查表的表格,例如9x9乘法表。这个表格是要被查询的。 编码流程当有了上述两点的条件后,我们将编码的流程总结为下面几点: 例如要被编码的字符串是:ILU
var encoding = base32.NewEncoding("ybndrfg8ejkmcpqxot1uwisza345h769")复制代码ybndrfg8ejkmcpqxot1uwisza345h769 是 32 个字符,对应 base 32 编码,下标 0 对应的字符是 y 当上面的 ILU 例子用 该表格编码时,那么就不再是: 494C55 总结在上面的第3步,对于刚好能够整数划分的 (8 / 4 = 2 整除),是不会有出现在最终结果后面补充等于号"="符号的情况的,而不能除尽的,将会被补充为 "=" 。下面是 16,32和64的需要bit位个数和编码表的总字符 名称下标数字的位个数编码表字符串位数不足是否会补全 = base 164数字0~9 和 字母 A~F不会,位数刚好是 4 的倍数 base 325大写字母A~Z 和 数字2~7会 base 646大写字母A~Z,小写字母a~z,数字0~9以及"+","/"会名称编码后,数据量变化 base 16由一个8位表示一个字符 变成 4位表示一个字符,数据量变 2 倍 base 32变为 8/5 倍 base 64变为 8/6=4/3 倍补全的限制,拿base32 来说,因为每5位表示一个字符下标值,而原始数据是8位,这就意味着,划分会出现剩下的情况,例如:8 - 5 = 3,明显有3个 bit 位剩下,那么至少要多少个位才能满足步出现剩下的呢?这是一个最小公倍数问题,就是: 5*8 = 40 位。我们可以验证一下,当两个字符的时候,是16位,16/5 = 1,以此类推。 最终,得出在 base32 的编码中,待编码数据至少要 >= 40 位,其最终的编码结果才能不出现 = 号。例如要被编码的字符是3,很明显,它的结果是:D=======,后面的 = 都是补全的。 同理,base64 的是至少 24 位,24 是 6 和 8 的最小公倍数。 上述,就是所有内容,记住此类编码方式的主要点:
链接:https://juejin.im/post/5c0a2407f265da611f0780c7 来源:掘金 |
推荐了解热门学科
java培训 | Python人工智能 | Web前端培训 | PHP培训 |
区块链培训 | 影视制作培训 | C++培训 | 产品经理培训 |
UI设计培训 | 新媒体培训 | 产品经理培训 | Linux运维 |
大数据培训 | 智能机器人软件开发 |
传智播客是一家致力于培养高素质软件开发人才的科技公司,“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。
传智播客从未停止思考
传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”
中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。
何为中高级程序员课程?
传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展。“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。
黑马程序员热门视频教程【点击播放】
Python入门教程完整版(懂中文就能学会) | 零起点打开Java世界的大门 |
C++| 匠心之作 从0到1入门学编程 | PHP|零基础入门开发者编程核心技术 |
Web前端入门教程_Web前端html+css+JavaScript | 软件测试入门到精通 |