79763d79bcf56403183c02a8e3330209
Base64编码算法

1 概述

  Base64编码是一种基于64个可打印字符来表示二进制数据的方法。目前Base64已经成为网络上常见的传输8位二进制字节代码的编码方式之一。
  为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如:传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制。图片的二进制流的每个字节不可能全部是可见字符,这就导致图片的二进制流无法传送。最好的解决方式就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。即把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码就是为了实现这一方案而设计的编码格式。
  Base64就是一种基于64个可打印字符来表示二进制数据的表示方法。

2 编码流程

  (1)将待转换的字符串每三个字节分为一组,每个字节占8个二进制位,那么共有24个二进制位。
  (2)将第(1)步得到的每24个二进制位分为每6个一组,则每3个字节可分为4组。
  (3)在每组前面添加两个0,每组由6个二进制位变为8个二进制位,总共32个二进制位,即四个字节。
  (4)根据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
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

3 实例讲解

  例如:字符串"H"、"e"、"l"、"l"、"o"、"W"、"o、"r"、"l"、"d"。转换为Base64过程如下:

top Created with Sketch.