为什么JavaScript的`atob()`和`btoa()`这样的命名?
在Javascript中, window.atob()
方法解码base64string, window.btoa()
方法将string编码为base64。
那为什么他们不像base64Decode()
和base64Encode()
? atob()
和btoa()
没有意义,因为它们不是语义的。
我想知道原因。
atob()
和btoa()
方法允许作者从base64编码转换内容。
在这些API中,为了助记符的目的,可以认为“b”代表“二进制”,“a”代表“ASCII”。 但实际上,由于历史原因,这些函数的input和输出都是Unicodestring。
来自: http : //www.w3.org/TR/html/webappapis.html#atob
总结已经给出的答案:
-
atob
代表ASCII to binary
- 例如:
atob("ZXhhbXBsZSELCg==") == "example!^K"
- 例如:
-
btoa
代表binary to ASCII
- 例如:
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
- 例如:
为什么SCII和Baryary:
-
ASCII
(a
)是base64
编码的产物。 一个安全的文本,只能由正确表示和运输的ascii字符(*)的一个子集(如电子邮件的正文)组成, -
binary
(b
)是0和1的任何stream(在JavaScript中,它必须用stringtypes表示)。
(*)在base64
这些是限于: AZ
, az
, 0-9
, +
, /
和=
(填充,只在最后) https://en.wikipedia.org/wiki/Base64
PS我必须承认,我自己最初是由命名困惑,并认为名称交换。 我以为b
代表“ b ase64编码的string”和a
“ a nystring” :D。
目前我无法find源,但在这种情况下,b代表“二进制”,a代表“ASCII”,这是众所周知的。
因此,这些函数实际上被命名为:
用于atob()
ASCII到二进制,用于btoa()
二进制到ASCII。
请注意,这是浏览器的实现,只是为了传统/向后兼容的目的。 例如在Node.js中,这些不存在。