Em Javascript, o window.atob()
método decodifica uma string base64 e o window.btoa()
método codifica a string
em base64 .
Então, por que eles não foram nomeados como base64Decode()
e base64Encode()
?
atob()
e btoa()
não faz sentido, porque eles não são semânticos.
Eu quero saber o motivo.
javascript
Константин Ван
fonte
fonte
name
, geralmente eles usam nome longo claro comogetElementById
,addEventListener
Respostas:
Os métodos
atob()
ebtoa()
permitem que os autores transformem o conteúdo de e para a codificação base64.De: http://www.w3.org/TR/html/webappapis.html#atob
fonte
atob()
converte binário em ASCII ebtoa()
converte ASCII em binário.atob
é ascii para binário. eles meio que deixaram isso de fora das duas respostas. por isso não é revertidoString
éBinary
?! E eu pensei o tempo todo, binário era algo como 0 e 1. Isso é TÃO CONFUSO!window.btoa
leia seu argumento como dados binários e divida-o em 6 bits de pedaços para codificá-lo; é verdade, então a nomeação faz sentido do ponto de vista. No entanto, tambémwindow.btoa
leva apenas uma string como argumento! :(window.btoa
leva apenas uma string como argumento!" <Isso é verdade, mas a string aqui é apenas uma representação dos dados. Por exemplo, se você tentar abrir uma imagem em um bloco de notas, ela será exibida como uma string, mas ainda serão dados binários.btoa
A principal vantagem é que ele não se importa com o formato da string, apenas a trata como binária. É apenas acidental que, na maioria dos casos, essa string seja regular.Para resumir as respostas já fornecidas:
atob
apoiaASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
apoiabinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
Por que A SCII e b inário :
ASCII
(thea
) é o resultado dabase64
codificação. Um texto seguro composto apenas por um subconjunto de caracteres ascii (*) que pode ser corretamente representado e transportado (por exemplo, o corpo do email),binary
(theb
) é qualquer fluxo de 0s e 1s (em javascript, ele deve ser representado com um tipo de string).(*) Na
base64
estes estão limitados a:A-Z
,a-z
,0-9
,+
,/
e=
(estofamento, apenas no final) https://en.wikipedia.org/wiki/Base64PS Devo admitir que eu mesmo fiquei inicialmente confuso com o nome e pensei que os nomes foram trocados. Pensei que
b
suporte para " b ase64 string codificada" ea
para " uma corda ny" : D.fonte
btoa
ainda é tecnicamente ASCII, não há justificativa para o nomeatob
que aceita apenas base64 como entrada.Eu sei que isso é antigo, mas foi lançado recentemente no Twitter, e pensei em compartilhá-lo por ser autoritário.
Eu:
Ele:
Caso o link do Minix se quebre, aqui está o conteúdo da página de manual:
Fonte: Brendan Eich, o criador do JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
fonte
Não consigo localizar uma fonte no momento, mas é do conhecimento geral que, nesse caso, o b significa 'binário' e o a como 'ASCII'.
Portanto, as funções são realmente nomeadas:
ASCII para Binário para
atob()
e Binário para ASCII parabtoa()
.Observe que esta é a implementação do navegador e foi deixada para fins de compatibilidade herdada / anterior. No Node.js, por exemplo, eles não existem.
fonte
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')