打开/关闭菜单
切换首选项菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

Base64

来自迷雾wiki
Musicraft留言 | 贡献2025年3月4日 (二) 14:17的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

基本介绍

base 64是一种基于64个可打印字符来表示二进制数据的方法,是8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息

编码规则

Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3x8=4x6=24),然后把6Bit再添两位高位0,组成四个8Bit的字节,并按照base64转换表转换成字符串。当要编码的字节数不能被3整除时,如多出2个字节,这时可以使用以下方法进行处理:先使用0字节值在末尾补足,使其能够被3整除,然后再进行Base64的编码。在编码后的Base64文本后加上一个或两个“=”号,代表补足的字节数

base64的转换表
十进制 二进制 字符   十进制 二进制 字符   十进制 二进制 字符   十进制 二进制 字符
0 000000 A 16 010000 Q 32 100000 g 48 110000 w
1 000001 B 17 010001 R 33 100001 h 49 110001 x
2 000010 C 18 010010 S 34 100010 i 50 110010 y
3 000011 D 19 010011 T 35 100011 j 51 110011 z
4 000100 E 20 010100 U 36 100100 k 52 110100 0
5 000101 F 21 010101 V 37 100101 l 53 110101 1
6 000110 G 22 010110 W 38 100110 m 54 110110 2
7 000111 H 23 010111 X 39 100111 n 55 110111 3
8 001000 I 24 011000 Y 40 101000 o 56 111000 4
9 001001 J 25 011001 Z 41 101001 p 57 111001 5
10 001010 K 26 011010 a 42 101010 q 58 111010 6
11 001011 L 27 011011 b 43 101011 r 59 111011 7
12 001100 M 28 011100 c 44 101100 s 60 111100 8
13 001101 N 29 011101 d 45 101101 t 61 111101 9
14 001110 O 30 011110 e 46 101110 u 62 111110 +
15 001111 P 31 011111 f 47 101111 v 63 111111 /
填充 =

简单示例

文本 M a n
ASCII编码 77 97 110
二进制位 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
索引 19 22 5 46
Base64编码 T W F u

如上表所示,Man (3字节)编码的结果为 TWFu(4字节),很明显经过 base64 编码后体积会增加 1/3。Man 这个字符串的长度刚好是 3,我们可以用 4 个 base64 单元来表示。

文本(1 Byte) A
二进制位 0 1 0 0 0 0 0 1 0 0 0 0
二进制位(補0) 0 1 0 0 0 0 0 1 0 0 0 0 留空填充 留空填充
Base64编码 Q Q = =
文本(2 Byte) B C
二进制位 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0
二进制位(補0) 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 留空填充
Base64编码 Q k M =

如上表所示,字符 A 经过 base64 编码后的结果是 QQ==,该结果后面的两个 = 代表补足的字节数。字符串 BC 经过 base64 编码后的结果是 QkM=,该结果后面的 1 个 = 代表补足的字节数。