In Javascript window.atob()
decodiert die Methode eine base64- Zeichenfolge und die window.btoa()
Methode eine string
in base64 .
Warum wurden sie dann nicht so genannt base64Decode()
und base64Encode()
?
atob()
und btoa()
machen keinen Sinn, weil sie überhaupt nicht semantisch sind.
Ich möchte den Grund wissen.
javascript
Константин Ван
quelle
quelle
name
, normalerweise verwenden sie klare lange Namen wiegetElementById
,addEventListener
Antworten:
Mit den Methoden
atob()
undbtoa()
können Autoren Inhalte in und aus der base64-Codierung transformieren.Von: http://www.w3.org/TR/html/webappapis.html#atob
quelle
atob()
konvertiert Binär in ASCII undbtoa()
konvertiert ASCII in Binär.atob
ist ascii zu binär. Sie haben dies aus beiden Antworten herausgelassen. so ist es nicht umgekehrtString
istBinary
?! Und ich dachte die ganze Zeit, Binär ist so etwas wie 0 und 1. Das ist so verwirrend!window.btoa
Lesen Sie das Argument als Binärdaten und teilen Sie es in 6 Bits auf, um es zu codieren. es ist wahr, also macht die Benennung aus einer Sicht Sinn. Nimmt aber auchwindow.btoa
nur einen String als Argument! :(window.btoa
nur einen String als Argument!" <Das stimmt, aber die Zeichenfolge hier ist nur eine Darstellung der Daten. Wenn Sie beispielsweise versuchen, ein Bild in einem Notizblock zu öffnen, wird es als Zeichenfolge angezeigt, es handelt sich jedoch weiterhin um Binärdaten.btoa
Der Hauptvorteil ist, dass es egal ist, in welchem Format die Zeichenfolge vorliegt, sondern dass sie nur als binär behandelt wird. Es ist nur zufällig, dass diese Zeichenfolge in den meisten Fällen eine reguläre Zeichenfolge ist.Um die bereits gegebenen Antworten zusammenzufassen:
atob
steht fürASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
steht fürbinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
Warum A SCII und B inary:
ASCII
(thea
) ist das Ergebnis derbase64
Codierung. Ein sicherer Text, der nur aus einer Teilmenge von ASCII-Zeichen (*) besteht, die korrekt dargestellt und transportiert werden können (z. B. E-Mail-Text).binary
(theb
) ist ein beliebiger Stream von 0s und 1s (in Javascript muss er mit einem String-Typ dargestellt werden).(*) In
base64
diese beschränkt zu sein :A-Z
,a-z
,0-9
,+
,/
und=
(padding, erst am Ende) https://en.wikipedia.org/wiki/Base64PS Ich muss zugeben, dass ich selbst anfangs durch die Benennung verwirrt war und dachte, die Namen wurden getauscht. Ich dachte, das
b
steht für " b ase64 coded string" unda
für " a ny string" : D.quelle
btoa
technisch immer noch ASCII ist, gibt es keine Rechtfertigung für den Namen,atob
der nur base64 als Eingabe akzeptiert.Ich weiß, dass dies alt ist, aber es ist kürzlich auf Twitter aufgetaucht, und ich dachte, ich würde es teilen, da es maßgeblich ist.
Mich:
Ihm:
Falls der Minix-Link unterbrochen wird, finden Sie hier den Inhalt der Manpage:
Quelle: Brendan Eich, der Schöpfer von JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
quelle
Ich kann momentan keine Quelle finden, aber es ist allgemein bekannt, dass in diesem Fall das b für 'binär' und das a für 'ASCII' steht.
Daher heißen die Funktionen tatsächlich:
ASCII zu Binär für
atob()
und Binär zu ASCII fürbtoa()
.Beachten Sie, dass dies eine Browser-Implementierung ist und aus Gründen der Legacy- / Abwärtskompatibilität beibehalten wurde. In Node.js zum Beispiel existieren diese nicht.
quelle
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')