В Javascript window.atob()
метод декодирует строку base64, а window.btoa()
метод кодирует string
в base64 .
Тогда почему они не были названы как base64Decode()
и base64Encode()
?
atob()
и btoa()
не имеет смысла, потому что они не семантические вообще.
Я хочу знать причину.
javascript
Константин Ван
источник
источник
name
, обычно они используют ясное длинное имя, напримерgetElementById
,addEventListener
Ответы:
atob()
Иbtoa()
методы позволяют авторам преобразовать содержимое в и из кодировки base64.От: http://www.w3.org/TR/html/webappapis.html#atob
источник
atob()
преобразует двоичный файл в ASCII иbtoa()
преобразует ASCII в двоичный.atob
является ascii для двоичного кода. они как бы исключили это из обоих ответов. таким образом, это не полностью измененоString
жеBinary
?! И я все время думал, что двоичный код был чем-то вроде 0 и 1. Это ТАК ЗАМЕДЛЕННО!window.btoa
считайте его аргумент как двоичные данные и разбейте его на 6 битов, чтобы закодировать его; это правда, поэтому наименование имеет смысл с точки зрения. Однако, также,window.btoa
принимает только строку в качестве аргумента! :(window.btoa
в качестве аргумента также используется только строка !" <Это правда, но строка здесь является только представлением данных. Например, если вы попытаетесь открыть изображение в блокноте, оно будет отображаться в виде строки, но это все еще двоичные данные.btoa
Основным преимуществом является то, что его не волнует, в каком формате находится строка, он просто обрабатывает ее как двоичный. Случайно, что в большинстве случаев эта строка является обычной строкой.Подводя итог уже даным ответам:
atob
обозначаетASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
обозначаетbinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
Почему A SCII и B inary:
ASCII
(a
) является результатомbase64
кодирования. Безопасный текст состоит только из подмножества символов ASCII (*) , которые могут быть правильно представлены , и перемещаемым (например , электронной почтой тело в),binary
(b
) - это любой поток из 0 и 1 (в javascript он должен быть представлен строковым типом).(*) В
base64
них ограничены:A-Z
,a-z
,0-9
,+
,/
и=
(обивка, только в конце) https://en.wikipedia.org/wiki/Base64PS Я должен признать, что сам изначально был озадачен именами и думал, что имена поменялись местами. Я думал , что
b
стенд для « б ase64 закодированной строки» иa
для « в строке пу» : D.источник
btoa
все еще технически ASCII, нет оправдания для имени,atob
которое принимает только base64 в качестве входных данных.Я знаю, что это старо, но недавно оно появилось в Твиттере, и я решил поделиться им, потому что оно авторитетно.
Меня:
Ему:
В случае разрыва ссылки Minix, вот содержание справочной страницы:
Источник: Брендан Эйх, создатель JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
источник
Я не могу найти источник в данный момент, но общеизвестно, что в этом случае b означает «двоичный», а a - «ASCII».
Следовательно, функции на самом деле называются:
ASCII для двоичного для
atob()
и двоичный для ASCII дляbtoa()
.Обратите внимание, что это реализация браузера, и она была оставлена для устаревшей / обратной совместимости. Например, в Node.js их не существует.
источник
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')