Base64算法介绍

Base64算法介绍

Base64就是用64个英文字符来表示二进制数据的一种编码方式。64个英文字符分别是A-Z、a-z、0-9、/+。

64个字符展示

编号字符编号字符
0A32g
1B33h
2C34i
3D35j
4E36k
5F37l
6G38m
7H39n
8I40o
9J41p
10K42q
11L43r
12M44s
13N45t
14O46u
15P47v
16Q48w
17R49x
18S50y
19T51z
20U520
21V531
22W542
23X553
24Y564
25Z575
26a586
27b597
28c608
29d619
30e62+
31f63/

基本思想

将原数据每3个字节(24bit)分为一组,然后将这24bit数据按照每6bit一组,重新划分为4组,分组完成之后,再将每每6bit数据为单元进行映射。

编码流程

  1. 将给定的数据转换成二进制编码,转换成二进制编码的方式。
  2. 对给定的编码做分组转换操作,每3个字节(24bit)分为一组,然后将这24bit划分为4组6bit。
  3. 对获得的4组6bit编码进行补位,向6bit编码的高位补2bit 0,变成4组8bit编码。
  4. 将每个8bit编码转换为十进制编码。
  5. 以十进制编码为索引,映射为上表中对应的字符。
当原文字节长度是3的整数倍

比如,将字符串ABC转换成Base64编码:
1.将ABC分别转换成二进制数据如下
2.将图中的二进制数据以6bit分为四组
3.将四组6bit进行高位补0,补成8bit
4.将补完后的8bit二进制转换成十进制
5.按照十进制编号找到对应的字符
在这里插入图片描述

当原文字节长度不是3的整数倍

比如,将字符串ABCD转换成Base64编码:
1.将ABCD分别转换成二进制数据如下
2.由于ABCD总共有32bit,需要补全称24的倍数,补全16bit,补全后,将图中的二进制数据以6bit分为四组
3.将四组6bit进行高位补0,补成8bit
4.将补完后的8bit二进制转换成十进制
5.按照十进制编号找到对应的字符
6.由于后边16位0都是填充的,因此不能映射成字符A,Base64中规定,填充的0字节用=来进行补全
在这里插入图片描述
注意:

原文的数据长度除以3余数为0时,编码之后后面没有"=";当余数为1时,后面有两个"=",当余数是2时,后面有一个"=""="的个数也就是补充的字节数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值