为什么Javascript`atob()`和`btoa()`这样命名?

2020/10/07 03:41 · javascript ·  · 0评论

在Javascript中,window.atob()method解码base64字符串,然后window.btoa()将a编码stringbase64

那么,为什么没有他们命名为喜欢的base64Decode()base64Encode()
atob()并且btoa()没有任何意义,因为它们根本不是语义的。

我想知道原因。

atob()btoa()方法允许作者进行改造的内容,并从base64编码。

在这些API中,出于记忆的目的,可以将“ b”视为“二进制”,将“ a”视为“ ASCII”。但是,实际上,出于主要历史原因,这些函数的输入和输出都是Unicode字符串。

来自: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和b inary:

  • ASCIIa)是base64编码的结果仅由可以正确表示和传输的ascii字符(*)子集组成安全文本(例如电子邮件的正文),
  • binaryb)是01的任何流(在javascript中,它必须以字符串类型表示)。

(*)在base64这些被限制为:A-Za-z0-9+/=(填充,仅在端部)https://en.wikipedia.org/wiki/Base64

PS我必须承认,我本人最初对命名感到困惑,并认为名称已被交换。我认为b立场b ase64编码字符串”,并a一个纽约字符串”:d。

我知道这很旧,但是最近它出现在Twitter上,我认为我会分享它,因为它是权威性的。

我:

@BrendanEich您选择了那些名字吗?

他:

旧的Unix名称,很难找到手册页,但请参阅
https://www.unix.com/man-page/minix/1/btoa/…名称从Unix延续到Netscape代码库中。我在1995年匆忙地将它们反映到JS中(在5月的十天之后,但很快)。

如果Minix链接中断,则以下是手册页内容:

BTOA(1)                                           BTOA(1)

NAME
       btoa - binary to ascii conversion

SYNOPSIS
       btoa [-adhor] [infile] [outfile]

OPTIONS
       -a     Decode, rather than encode, the file

       -d     Extracts repair file from diagnosis file

       -h     Help menu is displayed giving the options

       -o     The obsolete algorithm is used for backward compatibility

       -r     Repair a damaged file

EXAMPLES
       btoa <a.out >a.btoa # Convert a.out to ASCII

       btoa -a <a.btoa >a.out
               # Reverse the above

DESCRIPTION
       Btoa  is  a  filter that converts a binary file to ascii for transmission over a telephone
       line.  If two file names are provided, the first in used for input and the second for out-
       put.   If  only one is provided, it is used as the input file.  The program is a function-
       ally similar alternative to uue/uud, but the encoding is completely different.  Since both
       of  these are widely used, both have been provided with MINIX.  The file is expanded about
       25 percent in the process.

SEE ALSO
       uue(1), uud(1).

资料来源:JavaScript的创建者Brendan Eich。https://twitter.com/BrendanEich/status/998618208725684224

我目前无法找到源,但众所周知,在这种情况下,b代表“二进制”,而a代表“ ASCII”。

因此,这些函数实际上被命名为:

ASCII为二进制atob(),二进制为ASCII btoa()

请注意,这是浏览器的实现,留作传统/向后兼容的目的。例如,在Node.js中,这些不存在。

本文地址:http://javascript.askforanswer.com/weishenmejavascriptatobhebtoazheyangmingming.html
文章标签:
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!