一文带你读懂base64编码

hi,大家好,我是开发者FTD。相信很多同学在工作中,经常会用到Base64编码,那大家知道为什么会有Base64编码吗?我们为什么要使用它呢,它又是怎么实现的呢?下面就让我们来一起深入探究一下Base64编码吧。

Base 家族

在开始之前,我们先给大家介绍一下Base家族。虽然我们在工作中使用最多的是Base64,但是Base家族可不止是只有Base64,除了Base64之外,Base家族还有Base32和Base16。

我们都知道ASCII 编码,ASCII 编码是用256(2的8次方)个字符,对二进制数据进行编码的方式,同样的

  • Base64 编码是用64(2的6次方)个字符,对二进制数据进行编码的方式

  • Base32 编码是用32(2的5次方)个字符,对二进制数据进行编码的方式

  • Base16 编码是用16(2的4次方)个字符,对二进制数据进行编码的方式

那Base家族有这么多编码形式,为什么偏偏使用Base64呢?

  • Base64 编码是用64(2的6次方)个特定的ASCII字符来表示256(2的8次方)个ASCII字符,也就是说三个ASCII字符经过Base64编码后变为四个的ASCII字符显示(公约数为24),编码后数据长度比原来增加1/3,不足3n用“=”补足。

  • Base32 编码就是用32(2的5次方)个特定的ASCII字符来表示256(2的8次方)个ASCII码,也就是说五个ASCII字符经过Base32编码后会变为八个ASCII字符显示(公约数为40),编码后数据长度比原来增加3/5,不足8n用“=”补足。

  • Base16 编码就是用16(2的4次方)个特定的ASCII字符表示256(2的8次方)个ASCII字符,也就是说一个ASCII字符经过Base16编码后会变为两个ASCII字符显示,编码后数据长度比原来增加一倍,不足2n用“=”补足。

从上面可以看出Base64编码后,长度增加是最少的,这也是我们选用Base64的一个重要原因。

Base64 简介

Base64顾名思义,就是基于64个可打印字符来表示二进制数据的一种方法,注意它并不是一种加密算法。对于64个打印字符,我们只需要6个二进制位就可以完全表示了。那么我们如何利用8个二进制位来表示只需要6个二进制位就可以完全表示的可打印字符呢?由于2的6次方等于64,所以我们可以将每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。

Base64是从二进制数据到字符的过程。所以计算机中所有的内容,包括文本、图片、音频、视频等等都可以使用Base64编码来表示。

Base64 编码原理

Base64编码就是使用64个字符作为一个基本字符集:

小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)

然后,所有其他符号都根据一定规则转换成这个字符集中的字符。

具体来说,Base64编码的转换方式可以分为以下四步:

  • 第一步,将每三个字节作为一组,一共是24个二进制位
  • 第二步,将这24个二进制位分为四组,每个组有6个二进制位
  • 第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节
  • 第四步,根据下表,得到扩展后的每个字节的对应符号,这就是Base64的编码值

Base64 编码的字符索引表如下所示:

数值 字符 数值 字符 数值 字符 数值 字符
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值