Open XXHolic opened 5 years ago
在工作中,遇到了图片转换的问题,碰到了几个概念,查了点资料,在此记录一下。
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。
i
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 实现的一种。
A
Q
g
w
B
R
h
x
C
S
y
D
T
j
z
E
U
k
0
F
V
l
1
G
W
m
2
H
X
n
3
I
Y
o
4
J
Z
p
5
K
a
q
6
L
b
r
7
M
c
s
8
N
d
t
9
O
e
u
+
P
f
v
/
示例
引子
在工作中,遇到了图片转换的问题,碰到了几个概念,查了点资料,在此记录一下。
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 实现的一种。
A
Q
g
w
B
R
h
x
C
S
i
y
D
T
j
z
E
U
k
0
F
V
l
1
G
W
m
2
H
X
n
3
I
Y
o
4
J
Z
p
5
K
a
q
6
L
b
r
7
M
c
s
8
N
d
t
9
O
e
u
+
P
f
v
/
示例
encoded
参考资料
:wastebasket:
这部作品让我感觉很神奇。 ![30-poster][url-local-poster]