Base64是最常见的用于传输8Bit字节码的编码方式之一,它是一种基于64个可打印字符来表示二进制数据的方法。
Base64编码,是由64个字符组成编码集:26个大写字母A~Z,26个小写字母a~z,10个数字0~9,符号“+”与符号“/”。Base64编码的基本思路是将原始数据的三个字节拆分转化为四个字节,然后根据Base64的对应表,得到对应的编码数据。
当原始数据凑不够三个字节时,编码结果中会使用额外的符号“=”来表示这种情况。
Base64编码表
码值
字符
码值
字符
码值
字符
0
A
26
a
52
0
1
B
27
b
53
1
2
C
28
c
54
2
3
D
29
d
55
3
4
E
30
e
56
4
5
F
31
f
57
5
6
G
32
g
58
6
7
H
33
h
59
7
8
I
34
i
60
8
9
J
35
j
61
9
10
K
36
k
62
+
11
L
37
l
63
/
12
M
38
m
13
N
39
n
14
O
40
o
15
P
41
p
16
Q
42
q
17
R
43
r
18
S
44
s
19
T
45
t
20
U
46
u
21
V
47
v
22
W
48
w
23
X
49
x
24
Y
50
y
25
Z
51
z
Base64编码步骤
- 将原始数据按照每三个字节作为一组进行划分,每组一共是24个二进制位。
- 再将这24个二进制位,每6个一划分,分为四组(6×4=24个二进制位)。
- 然后在每组前面补上00,扩展成8×4=32个二进制位,即四个字节(因为每个字节前面有2个0,所以每个字节的最大值是63)。
- 最后根据Base64编码表,将这四个字节的码值,转换为对应的Base64的字符即可。
情况1:正常的3个字节编码
将单词“PCB”转换为Base64编码:
- "P"、"C"、"B"的ASCII值分别是80、67、66,对应的二进制值是0101 0000、0100 0011、0100 0010,将它们连成一个24位的二进制字符串000。
- 将这个24位的二进制字符串,每6个一组分成4组:010100、000100、001101、000010。
- 在每组前面加两个00,扩展成32个二进制位,即四个字节:00010100、00000100、00001101、00000010。它们的十进制值分别是19、22、5、46。(最前面加上两个0只是为了凑成一个字节,实际上其本身的数值是没有变化的)
- 根据上表,得到每个值对应Base64编码,即U、E、N、C。
情况2:剩余2个字节编码
对于2个字节(16个二进制数)的情况,比如将“PC”转换为Base64编码:
转换方法同上,区别在于:
- 16个二进制数,每6个一组分割,最后剩余4个,这时再在后面补两个0凑成6个。
- 然后还按照基础的方法转换,最后补一个“=”即可
转换过程如下表,最终将“PC”转换为了“UEM=”
情况3:剩余1个字节编码
对于12个字节(8个二进制数)的情况,比如将“P”转换为Base64编码:
转换方法同上,区别在于:
- 16个二进制数,每6个一组分割,最后剩余2个,后面要再补4个0
- 然后还按照基础的方法转换,最后补两个“=”即可
转换过程如下表,最终将“P”转换为了“UA==”
编码程序
编码的程序设计思路,就是按照上面讲解的编码过程,每3个原始字符为一组,进行编码,得到4个base64的字符。对于不够3个字符的情况,编码的base64的字符后面补上一到两个号。
代码语言:javascript
复制
解码程序
解码的程序设计思路,其实就是编码的反过程,把要解码的base64符号,每4个为一组,译码成3个字符。对于最后出现的的情况,就说明是要结束了,直接使用剩余的base64符号进行译码,然后就结束了。
代码语言:javascript
复制
测试程序
使用字符串“PCB”进行base64编码测试,然后再将编码得到的结果,进行解码测试。
代码语言:javascript
复制
输出结果如下,可以看出,“PCB”进行base64编码,得到了“UENC”,然后再反向解码,又得到了“PCB”
代码语言:javascript
复制
到此这篇字符串转码技术介绍图(字符串转码技术介绍图片)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/jszy-zmms/51672.html