Base64 编码过程

Prerequisites

Base64就是一种基于 64 个(8 位的数据总共可表示 64 个字符,2 的 8 次方)可打印字符来表示二进制数据的方法。

把 3 个字节(总共 24 位的数据)(从左向右)分为 4 组,每组数据前面补 2 个 0,形成 8 位的数据(分组过程中最后的余下的不满 6 位的数据,后面补 0),3 字节的数据变成了 4 字节,在把每个字节用对照表中的字符替换,然后按 4 个字符(字节)分组,最后剩下的不足四个字符的其余空位加 =

用 python 直接打印 “赵” 字在 win 系统中的 base64 编码为 1dQ=

1
2
3
4
5
6
import base64

s = '赵'
a = base64.b64encode(s.encode('gb2312'))
print(a)
# b'1dQ='

手动解析 “赵” 字在 win 系统中的 base64 编码

获取系统的活动代码页

cmd 命令行输入 chcp:

1
2
D:\data\b>chcp
活动代码页: 936

代码页 936 对应着字符集:gb2312

从 gb2312 字符集中找到 “赵” 对应的 16 进制编码

参考页面:https://www.toolhelper.cn/Encoding/GB2312

搜索到 “赵” 的编码为:D5D0+4=D5D4

16 进制转 2 进制,并按照 base64 编码规则编码

1101010111010100

从左往右数,6 位一组,不足 6 位的右面补 0

110101 011101 010000

分别给每组左边补两个 0
00110101 00011101 00010000

2 进制转为 10 进制
53 29 16
按照对照表:https://baike.baidu.com/item/Base64/8545775#1_2 找出对应的字符

1 d Q

后面补 =

结果为:1dQ=


Base64 编码过程
https://hutaoren.cn/2023/02/25/Base64 编码过程/
作者
胡桃仁
发布于
2023年2月25日
许可协议