简述 · 如何理解base64编码

base64,就是将字节序列编写为可打印的ascii字符,关键就集中在“可打印”三个字上。

计算机中数据存储使用二进制来表示,为了便于阅读,就需要指明哪些二进制数据代表哪个符号,于是ascii由此诞生。

但是ascii包含不可见的字符,在某些情况下可能被当做控制字符处理,从而传输错误。

还有一些场景需要纯文本传输,比如在http协议中使用json传输数据,如果需要提交文本参数和图片,将图片转化为ascii显然是有问题的,而base64则可以很好地处理,再比如http响应时,也可以使用base64将文件等二进制数据同字符数据一次返回。

所以说base64的特点就在于可移植性高。

假如你现在使用的是MySQL5.5.3之前的版本,意味着不支持utf8mb4字符集,倘若需要存储的文本中包含emoji表情,其中的一种方式就是使用base64编码再存储。

base64的字符集由0-9,a-z,A-Z,+,/,组成,=做末尾填充,编码过程就是使用4字节的base64字符表示3字节的ascii字符,很容易理解,base64有64个字符,共使用6bit表示,ascii有256个字符,共使用8bit来表示,两者的最小公倍数是24,就是4字节的base64字符或者3字节的ascii字符。

ascii

base64

转换过程如下,假设现在有个字符串“ab”,ascii表示即‭01100001‬01100010,拆成6bit的base64有3段,‬011000,01‬0110,001000,即“YWI”,由于不满4个字符,需要补一个=,最终是“YWI=”。

有兴趣的话可以在程序中自行验证。

 

--------------------------------

公众号:以镒称铢

出自<孙子兵法 · 军形>,故胜兵若以镒称铢,败兵若以铢称镒。胜者之战民也,若决积水于千仞之溪者,形也。

长按下图二维码关注,你将发现一个不一样的世界,君子引而不发,跃如也~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值