[javascript] 왜 자바 스크립트`atob ()`와`btoa ()`의 이름이 그렇게 되었습니까?

Javascript에서 window.atob()method는 base64 문자열을 디코딩 하고 window.btoa()method는 base64string 로 인코딩합니다 .

그럼 왜 그들은 같은 이름이되지 않은 base64Decode()base64Encode()?
atob()그리고 btoa()그들은 모두에서 의미하지이기 때문에 이해가되지 않습니다.

이유를 알고 싶습니다.



답변

atob()btoa()방법은 저자가하고 base64 인코딩 콘텐츠를 변환 할 수 있습니다.

이러한 API에서 니모닉 목적으로 “b”는 “이진”, “a”는 “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=="

A SCII와 b가 다른가 :

  • ASCII( a)는 base64인코딩 결과입니다 . 안전 만을 정확하게 표현하고 운반 할 수 있습니다 ASCII 문자의 부분 집합 (*)로 구성된 텍스트 (예 : 이메일의 몸)
  • binary( b)는 01의 스트림입니다 (자바 스크립트에서는 문자열 유형으로 표시되어야 함).

(*)에서 base64이러한 제한되어 A-Z, a-z, 0-9, +, /=(패딩만을 끝) https://en.wikipedia.org/wiki/Base64

추신 : 나는 나 자신이 처음 명명에 혼란스러워하고 이름이 바뀌 었다는 것을 인정해야합니다. 나는 그 생각 b에 대한 입장을 B 인코딩 된 문자열 ase64″a위해 ” 뉴욕 문자열” D :.


답변

나는 이것이 오래되었다는 것을 알고 있지만 최근에 트위터에 올라 왔으며 권위있는 것처럼 공유 할 것이라고 생각했습니다.

나를:

@BrendanEich 그 이름을 골랐나요?

그를:

오래된 유닉스 이름은 매뉴얼 페이지를 찾기 어렵지만 https://www.unix.com/man-page/minix/1/btoa/…를 참조
하십시오 . 이름은 Unix에서 Netscape 코드베이스로 옮겨졌습니다. 1995 년에 서둘러 JS에 반영했습니다 (5 월 10 일 이후 곧).

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에는 존재하지 않습니다.


답변