base64编码

319 阅读2分钟

定义:

基于64个可打印的字符来表示二进制数据的一种方式。该64个字符为:

   1. A~Z;

   2. a~z;

   3. 0~9;

   4. '+', '/';

// base64 对照表
0 A  17 R   34 i   51 z

1 B  18 S   35 j   52 0

2 C  19 T   36 k   53 1

3 D  20 U   37 l   54 2

4 E  21 V   38 m   55 3

5 F  22 W   39 n   56 4

6 G  23 X   40 o   57 5

7 H  24 Y   41 p   58 6

8 I  25 Z   42 q   59 7

9 J  26 a   43 r   60 8

10 K  27 b   44 s   61 9

11 L  28 c   45 t   62 +

12 M  29 d   46 u   63 /

13 N  30 e   47 v

14 O  31 f   48 w   

15 P  32 g   49 x

16 Q  33 h   50 y

转化步骤:

1. 将待转化的字符串转换成二进制格式, 并在前面补一个零。

2. 将二进制每六位分成一组。

3. 在每组二进制前加两个零。

4. 将每组处理过后的二进制转化成十进制。

5. 用十进制去base64表中找对应的字符。

examle

const str = 'Boy';
// 1. 将待转化的字符串转换成二进制格式, 并在前面补一个零。
const code = str.split('').map(item => '0' + item.charCodeAt().toString(2)).join(''); // 010000100110111101111001


// 2. 将二进制每六位分成一组。
const arr = [];
for (let i = 0; i < code.length; i += 6) {
    arr.push(code.slice(i, i + 6))
} // arr =>  ["010000", "100110", "111101", "111001"]


// 3. 在每组二进制前加两个零。
const arr2 = arr.map(item => '00' + item); // arr2 => ["00010000", "00100110", "00111101", "00111001"]


// 4. 将每组处理过后的二进制转化成十进制。
const arr3 = arr2.map(item => parseInt(item, 2)); // arr3 => [16, 38, 61, 57]


// 5. 用十进制去base64表中找对应的字符。
[16, 38, 61, 57] => 'Qm95'
所以 'Boy'的base64编码为'Qm95'

参考链接

1. blog.csdn.net/wo541075754…