资讯专栏INFORMATION COLUMN

Base64编码

iliyaku / 2589人阅读

摘要:编码三个重要概念三个字节由四个字节表示的过程码表补位如何用三个字节表示四个字节一个字节由位二进制组成,三个字节总共位,所以转换后有效的二进制位数为位。

Base64编码 1、三个重要概念

三个字节由四个字节表示的过程

Base64码表

补位

2、如何用三个字节表示四个字节

一个字节由8位二进制组成,三个字节总共24位,24 ÷ 4 = 6 , 所以转换后有效的二进制位数为6位。计算机以8位二机制为基础,所以剩下的两位在高位填充 0 。由此引申出两个重要的概念

为什么是64位

对照表

6位二进制,$2^6$ = 64 所以只能是64,当然如果愿意浪费空间也可以是 32 16 等等。对应的这些二进制怎么表示,所以定义了一个0-63的码表,分别有 A-Za-z0-9+/ 刚好64个字符

索引 字符 索引 字符 索引 字符 索引 字符 索引 字符 索引 字符
0 A 1 B 2 C 3 D 4 E 5 F
6 G 7 H 8 I 9 J 10 K 11 L
12 M 13 N 14 O 15 P 16 Q 17 R
18 S 19 T 20 U 21 V 22 W 23 X
24 Y 25 Z 26 a 27 b 28 c 29 d
30 e 31 f 32 g 33 h 34 i 35 j
36 k 37 l 38 m 39 n 40 o 41 p
42 q 43 r 44 s 45 t 46 u 47 v
48 w 49 x 50 y 51 z 52 0 53 1
54 2 55 3 56 4 57 5 58 6 59 7
61 8 62 9 63 + 64 /

author herbert QQ: 464884492

3、手工编码 3.1 刚好转换成4个二进制

根据规则使用三个字节转四个字节表示,现在就拿123做实例说明,通过查询ASCII表得知123的二进制分别是 0x31(0011 0001)、0x32(0011 0010)、0x33(0011 0011),根据规则得到4个6位二进制分别是 (0011 00) (01 0011) (0010 00) (11 0011),然后依次在高位补0即,右移2为,得到4个8位二进制 (00 0011 00) (00 01 0011) (00 0010 00) (00 11 0011),通过进制转换得到4个十进制数字,分别是(12)(19)(8)(51)。通过查询上边码表中对应的索引的四个 字符分别是(M)(T)(I)(z),所以 123 对应的 base64编码为MTIz

3.2 转换后还剩下4位二进制

以12来说,字节长度为16,根据规则转换后会剩下 4 个二进制位(0011 00) (01 0011) (0010) ,分配好以后,分别在高位补两个0 (00 0011 00) (00 01 0011) (00 0010 ),但最后一个字节,位数不够8位,所以在最后一个字节的末尾补上2个 0 (00 0011 00) (00 01 0011) (00 0010 00),然后在分别转换成十进制数为(12)(19)(8)查询索引表得到字符MTI,目前字符长度不够4位,所以在最后补上1个=。由此12最终的base64编码为MTI=

3.3 转换后还剩下2位二进制

以1来说,字节长度为8 ,根据规则转换后会剩下 2 个二进制位 (0011 00) (01),分配好以后,分别在高位补两个0 (00 0011 00) (00 01 ),但最后一个字节位数不够8位,所以在最后一个字节的末尾补上 4 个0 (00 0011 00) (00 01 0000),然后转换成十进制数为(M)(Q),目前长度不够4位,所以在最后补上2个= 由此1最终的base64编码为MQ==

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103897.html

相关文章

  • Base64基本原理及简单应用

    摘要:编码原理编码之所以称为,是因为其使用个字符来对任意数据进行编码,同理有编码。本文学习网上资料整理而来,仅供个人学习使用,部分内容仅代表个人理解及思考。 1.什么是Base64 Base64是一种基于64个可打印字符来表示二进制数据的编码方式,是从二进制数据到字符的过程。原则上,计算机中所有内容都是二进制形式存储的,所以所有内容(包括文本、影音、图片等)都可以用base64来表示。 2....

    zzir 评论0 收藏0
  • python模块之base64

    摘要:模块提供了在二进制数据和可打印字符间编解码的功能,包括中定义的等编码。可应用于生成安全的或文件系统编码场景中。等同于对类字节对象或纯字符组成的字符串进行标准解码,返回解码后的字节序列。 base64模块提供了在二进制数据和可打印ASCII字符间编解码的功能,包括RFC3548中定义的Base16, Base32, Base64, Ascii85, Base85等编码。 RFC3548中...

    CoderDock 评论0 收藏0
  • Java Base64 编码解码方案总结

    摘要:是一种能将任意资料用种字元组合成字串的方法,而这个资料和字串资料彼此之间是可以互相转换的,十分方便。实际测试编码与解码速度的话,提供的,要比套件提供的还要快至少倍,比提供的还要快至少倍。 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外...

    sevi_stuo 评论0 收藏0
  • Base62x比Base64编码速度更快吗?

    摘要:比如其中一个的应用场景,在中取代的改进使用的方案是从代码层分析耗时差值原因,尽管两者都使用了位操作进行计算,但在单位编码长度上多了数值判断,由此导致其速度下降。 现在几乎所有企事业单位、政府机构、军工系统等的IT生产系统都会用到Base64编码,从RSA安全密钥到管理信息系统登录入口回跳,目前越来越多的IT系统研发者开始使用 Base62x 替换 Base64. -Base62x 提供...

    tainzhi 评论0 收藏0
  • js手札--图片的Base64编码

    摘要:一编码在聊图片编码之前,先来说说编码,其实这一块已经有很多例子了。一次连接又是域名解析,开启连接,发送请求,等待网络延迟和服务器处理时间,下载资源较小是几个意思 一、Base64编码 在聊图片编码之前,先来说说Base64编码,其实这一块已经有很多例子了。 Base64编码么,其实就是一个招待好6爷,伺候好8爷的过程 Base64是把字符串转为二进制,然后末尾补零,使总长度能除尽24...

    junfeng777 评论0 收藏0
  • 让你完全理解base64是怎么回事

    摘要:它是按以下方式工作的。对已填充的二进制进行编码时,任何完全填充不包括原始数组中的位的位组都有特殊的第个符号表示。剩下的两个位组都是填充码,用来表示。最新的浏览器提供了自动生成的方法和希望此文可以帮助你完全理解。 HTTP将BASE64-编码用于基本认证和摘要认证,在几种HTTP扩展中也使用了该编码。 Base-64编码保证了二进制数据的安全 Base-64编码可以将任意一组字节转换为较...

    wangzy2019 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<