Почему Javascript 'atob ()` и' btoa () ' были названы так?



В Javascript,window.atob() метод декодирует a base64 строку и window.btoa() метод кодирует a string на base64.



тогда почему они не были названы как base64Decode() и base64Encode()?
atob() и btoa() не имеет смысла, потому что они вообще не семантические.



Я хочу знать причину.

425   4  

4 ответов:

The atob() и btoa() методы позволяют авторам преобразовывать содержимое в кодировку base64 и обратно.

в этих API, для мнемонических целей, "b" можно считать стенд для "двоичный", и "а" для "ASCII". На практике, однако, для прежде всего исторические причины, как вход, так и выход из них функции-это строки Юникода.

от: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=="

почему ASCII и binary:

  • ASCII (the a) является результатом base64 кодировка. А безопасное текст состоит только из подмножества символов ascii (*), которые могут быть правильно представлены и транспортированы (например, тело электронной почты),
  • binary (the b) - это любой поток 0s и 1s (в javascript он должен быть представлен строковым типом).

(*) в base64 они ограничены: A-Z,a-z,0-9,+,/ и = (обивка, только в конце) https://en.wikipedia.org/wiki/Base64

P. S. Я должен признаться, я сам был сначала смутило именования и думал, что имена поменялись местами. Я так и думал b подставка для "bкодированная строка ase64" и a на "aНью-Йорк строку": D.

Я знаю, что это старый, но он недавно появился в Twitter, и я думал, что поделюсь им, поскольку он авторитетен.

Me:

@BrendanEich вы выбрали эти имена?

Он:

старые имена Unix, трудно найти справочные страницы rn, но см. https://www.unix.com/man-page/minix/1/btoa/ .... Имена перенесены из Unix в кодовую базу Netscape. Я отразил их в JS через большая спешка в 1995 году (после десяти дней в мае, но скоро).

в случае разрыва ссылки Minix, вот содержание man-страницы:

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. https://twitter.com/BrendanEich/status/998618208725684224

Я не могу найти источник на данный момент, но общеизвестно, что в этом случае b означает "двоичный", а a - "ASCII".

следовательно, функции являются на самом деле называется:

ASCII в двоичный для atob(), и Двоичный код в ASCII для btoa().

Примечание это реализация браузера, и был оставлен для устаревших / обратной совместимости целей. в узлах.js например, они не существуют.

Comments

    Ничего не найдено.