Base64

Base64实验工具
http://tool.chinaz.com/Tools/Base64.aspx

ascii表
https://baike.baidu.com/item/ASCII/309296?fr=aladdin

Base64表,好吧这个表没写 2进制-10进制-Base64字符,你自己计算一下
https://baike.baidu.com/item/base64/8545775?fr=aladdin

Base64百科,为什么要用Base64编码啊?应用场景是哪啊?现实需求是什么啊?
https://baike.baidu.com/item/base64/8545775?fr=aladdin
https://www.imooc.com/article/9761

前置知识

  1. 1个字节=8bit
  2. ascii表,会查ascii表
  3. base64表,会查base64表,注意ascii表和base64表是不同表,下面转化时会说明的
  4. 3*8=4*6 这是Base64编码的核心

百科上的例子

转码过程例子1:

// 以下例子,你可以以2进制表示为基准去推导(你看到字符都认为是2进制)

// 字符串是 “123” ,刚好三个字节=3*8=24bit
字符串: “123”

// 查ascii表,“1” => 00110001, “2” => 00110010, “3” => 00110011, 字符"1"对应00110001,字符"2"对应00110010,字符"3"对应00110011
查ascii表转2进制: 00110001 00110010 00110011

// 3*8=4*6=24bit,将24bit分成4组
// 001100 010011 001000 110011 和 00110001 00110010 00110011 是一模一样的24bit,这里就是3*8=4*6=24bit
2进制:001100 010011 001000 110011

// 然后计算机一个字节占8位,不够就自动补两个高位0了
2进制: 00001100 00010011 00001000 00110011

// 上面就高位补0后,从46=24bit 变成 48=32bit,数据量变大了
// 00001100=>12=>M , 00010011=>19=>T, 00001000=>8=>I, 00110011=>51=>z
查base64表转字符: “MTIz”

所以字符串"123" 经过Base64编码后就是字符串 “MTIz” ,找个工具验证一下

转码过程例子2:

// 那么一开始要Base64编码的字符串不够3字节呢?这个例子2字节
// 如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’
字符串 “12”
查ascii表转2进制:00110001 00110010
//高位补0,不足填充0
// 001100=>00001100, 010011=>00010011, 0010=>00001000
补0填充0后:00001100 00010011 00001000
// 00001100=>12=>M, 00010011=>19=>T, 00001000=>8=>I
查base64表转字符: MTI
// MTI还差1个字符才组成4个字符啊,那就用"=",这里就补1个"="
最后base64编码:MTI=

所以字符串"12" 经过Base64编码后就是字符串 “MTI=” ,找个工具验证一下

转码过程例子3:

// 那么一开始要Base64编码的字符串不够3字节呢?这个例子1字节
// 如果剩下的字符不足3个字节,则用0填充,输出字符使用‘=’,因此编码后输出的文本末尾可能会出现1或2个‘=’
字符串 “1”
查ascii表转2进制:00110001
// 00110001 怎么补0呢? 00110001分成 001100 和 01,然后高位补0,不足填充0
// 001100=>00001100, 01=>0001=>00010000
补0填充0后: 00001100 00010000
// 00001100=>12=>M, 00010000=>16=>Q
查base64表转字符: MQ
// MQ还差2个字符才组成4个字符啊,那就用"=",这里就补2个"="
最后base64编码:MQ==

所以字符串"1" 经过Base64编码后就是字符串 “MQ==” ,找个工具验证一下

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值