近期接触AI图片识别,图片转码,从而接触到
base64
编码原理。为后续实现此编码原理,先学习了解~
base64编码
base64
是一种编码方式。
选出64个符号作为基础字符集,将其他字符都转换成这个字符集的内容,包括A~Z a~z 0~9 + /
共64个,但偶尔用'='补位,所以实际上是65个。
base64对应关系表
0 A 15 P 30 e 45 t 60 8
1 B 16 Q 31 f 46 u 61 9
2 C 17 R 32 g 47 v 62 +
3 D 18 S 33 h 48 w 63 /
4 E 19 T 34 i 49 x
5 F 20 U 35 j 50 y
6 G 21 V 36 k 51 z
7 H 22 W 37 l 52 0
8 I 23 X 38 m 53 1
9 J 24 Y 39 n 54 2
10 K 25 Z 40 o 55 3
11 L 26 a 41 p 56 4
12 M 27 b 42 q 57 5
13 N 28 c 43 r 58 6
14 O 29 d 44 s 59 7
转换步骤
1 三个字节为一组,一个字节为8位2进制,共24个二进制位
2 将24个二进制位分为四组,每组6个二进制位
3 在每组的头部,补充00,变为4组8个二进制位
4 根据对应表格,拿到扩展后的字符
转换列子 Key
(新手画表 懂的大佬评论指导一哈吧)
原始字符 | K | e | y | |
---|---|---|---|---|
ASCII | 75 | 101 | 121 | |
二进制 | 0100 1011 | 0110 0101 | 0111 1001 | |
分割 | 010010 | 110110 | 010101 | 111001 |
补位 | 00010010 | 00110110 | 00010101 | 00111001 |
转10进制 | 18 | 54 | 21 | 57 |
表对应 | S | 2 | V | 5 |
Linux
语句获得字符ASCII码值
[root@localhost moic_a] echo K | tr -d "\n" | od -An -t dC
75
Key
Linux
命令转换base64 (Cg==是换行)
[root@localhost moic_a] echo "Key" | base64
S2V5Cg==
当为两个字节时,将16位二进制按6.6.4分开,前两组前加00,第三组前后加00,最后第四位用 '=' 补位
原始字符 | K | e | ||
---|---|---|---|---|
ASCII | 75 | 101 | ||
二进制 | 0100 1011 | 0110 0101 | ||
分割 | 010010 | 110110 | 0101 | |
补位 | 00010010 | 00110110 | 00010100 | |
转10进制 | 18 | 54 | 20 | = |
表对应 | S | 2 | U | = |
[root@localhost moic_a] echo "Ke" | base64
S2UK
当为一个字节时,将8位二进制按6.2分开,第一组前面加00,第二组前面加00,后面加0000
原始字符 | K | |||
---|---|---|---|---|
ASCII | 75 | |||
二进制 | 0100 1011 | |||
分割 | 010010 | 11 | ||
补位 | 00010010 | 00110000 | ||
转10进制 | 18 | 48 | = | = |
表对应 | S | w | = | = |
[root@localhost moic_a] echo "K" | base64
Swo=
Linux转换和在线转换结果不一致
因为base64编转码有不同的包可实现,包内部算法不同会造成转换结果不一致,所以在url加密时,尽量不要用base64。
base64 在线转换验证
阮一峰大佬博客base64文章链接
网友评论