En Javascript, el window.atob()
método decodifica una cadena base64 y el window.btoa()
método codifica a string
en base64 .
Entonces, ¿por qué no fueron nombrados como base64Decode()
y base64Encode()
?
atob()
y btoa()
no tiene sentido porque no son semánticos en absoluto.
Quiero saber el motivo.
javascript
Константин Ван
fuente
fuente
name
, generalmente usan un nombre largo y claro comogetElementById
,addEventListener
Respuestas:
Los métodos
atob()
ybtoa()
permiten a los autores transformar el contenido hacia y desde la codificación base64.De: http://www.w3.org/TR/html/webappapis.html#atob
fuente
atob()
convierte binario a ASCII ybtoa()
convierte ASCII a binario.atob
es ascii a binario. de alguna manera dejaron esto fuera de ambas respuestas. para que no se inviertaString
¿Binary
qué es ? Y pensé todo el tiempo, binario era algo así como 0 y 1. ¡Esto es TAN CONFUSOR!window.btoa
lea su argumento como datos binarios y divídalo en 6 bits de fragmentos para codificarlo; es cierto, por lo que el nombre tiene sentido desde un punto de vista. Sin embargo, también, ¡window.btoa
solo toma una cadena como argumento! :(window.btoa
solo toma una cadena como argumento!" <Eso es cierto, pero la cadena aquí es solo una representación de los datos. Al igual que si intentas abrir una imagen en un bloc de notas, se mostrará como una cadena pero sigue siendo datos binarios.btoa
La principal ventaja es que no le importa en qué formato está la cadena, solo la trata como binaria. Es incidental que en la mayoría de los casos esa cadena sea una cadena normal.Para resumir las respuestas ya dadas:
atob
representaASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
representabinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
¿Por Un SCII y b ciertas piezas:
ASCII
(thea
) es el resultado de labase64
codificación. Un texto seguro compuesto solo por un subconjunto de caracteres ascii (*) que se pueden representar y transportar correctamente (por ejemplo, el cuerpo del correo electrónico),binary
(theb
) es cualquier flujo de 0s y 1s (en javascript debe representarse con un tipo de cadena).(*) En
base64
estos se limitan a:A-Z
,a-z
,0-9
,+
,/
y=
(relleno, sólo al final) https://en.wikipedia.org/wiki/Base64PD: Debo admitir que yo mismo estaba inicialmente confundido por el nombre y pensé que los nombres se intercambiaron. Yo pensaba que
b
el soporte para " b ase64 cadena codificada" ya
de " una cadena ny" : D.fuente
btoa
todavía es técnicamente ASCII, no hay justificación para el nombreatob
que solo acepta base64 como entrada.Sé que esto es viejo, pero recientemente apareció en Twitter, y pensé en compartirlo, ya que tiene autoridad.
Yo:
Él:
En caso de que el enlace Minix se rompa, aquí está el contenido de la página del manual:
Fuente: Brendan Eich, el creador de JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
fuente
No puedo encontrar una fuente en este momento, pero es de conocimiento común que en este caso, la b significa 'binario' y la a para 'ASCII'.
Por lo tanto, las funciones se denominan realmente:
ASCII a Binario para
atob()
y Binario a ASCII parabtoa()
.Tenga en cuenta que esta es la implementación del navegador, y se dejó con fines heredados / de compatibilidad con versiones anteriores. En Node.js, por ejemplo, estos no existen.
fuente
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')