引子
在工作中,遇到了图片转换的问题,碰到了几个概念,查了点材料,在此记录一下。
- Origin
- My GitHub
ASCII
ASCII 的全称是 American Standard Code for Information Interchange(美国规范信息替换码),是电子通信的字符编码标准。ASCII 码示意计算机、电信设施和其它设施中的文本。大多数古代字符编码的制订都是基于 ASCII,只管它们反对很多其它的字符。
ASCII 是从电报码中倒退进去的。第一次商业应用是由贝尔数据服务公司推广的 7 位电传打字机码。ASCII 规范的工作始于 1960.10.06,美国规范协会(ASA)(现为美国国家标准协会或简称 ANSI)X3.2 小组委员会召开了第一次会议。在 1963 年,规范的第一版本公布,在 1967 年进行了重大批改,最近的更新是在 1986 年。绝对于晚期的电报码,举荐的贝尔码和 ASCII 码都是为了更加不便的对列表排序,并为电传打字机以外的设施增加了一些性能。
最后基于英语字母表,ASCII 编码 128 个特定的字符为 7 位整数,如上面的图表所示,具体对应可见这里。
95 个编码的字符是可打印,这些字符包含:0-9、a-z、A-Z 和标点符号。此外,最后的 ASCII 标准包含 33 个非打印控制代码,这些代码源自电传打字机。其中大多数都已废除,只管有一些依然在广泛应用,如回车、换行和制表符代码。
举个例子,小写字母 i
在 ASCII 编码中用二进制示意为 11001001,十六进制示意为 69,十进制示意为 105。
Base64
Base64 是一组跟二进制转换为文本相似的编码方案,将 ASCII 中示意二进制的字符串转换为基数为 64 的示意。术语 Base64 源自 MIME 内容转换编码。每个 Base64 数字正好代表 6 位数据。3 个 8 位字节可能用 4 个 6 位 Base64 数字示意。
抉择用于示意基数的 64 位值的 64 个字符的特定汇合因实现而异。通常的策略是抉择 64 个大多数应用且可打印的字符。这种组合形式使得数据在信息系统间传输时,不太可能被批改,例如邮件,传统上不是规范的 8 位编码。举个例子,MIME 的 Base64 实现计划是应用 A-Z、a-z和0-9作为前 62 个值,其它变体同样共享这个个性,但最初的两个值在抉择符号上不同,有一个例子就是 UTF-7。
最早这种编码的实现是为了雷同操作系统间,进行拨号通信创立。因而能够对那些字符能够平安应用进行更多的假如。例如,uuencode 工具应用小写字符、数字和很多标点符号字符,但不应用小写。
上面为 Base64 实现的一种。
Index | Char | Index | Char | Index | Char | Index | Char | |||
---|---|---|---|---|---|---|---|---|---|---|
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 | / |
示例
Source | Text (ASCII) | M | a | n | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Octets | 77 (0x4d) | 97 (0x61) | 110 (0x6e) | ||||||||||||||||||||||
Bits | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | |
Base64 encoded | Sextets | 19 | 22 | 5 | 46 | ||||||||||||||||||||
Character | T | W | F | u | |||||||||||||||||||||
Octets | 84 (0x54) | 87 (0x57) | 70 (0x46) | 117 (0x75) |
参考资料
- ASCII
- base64
- ASCII Code