2015-11-22 8 views
92

In Javascript, window.atob() Methode decodiert eine Base64-Zeichenfolge und window.btoa() Methode codiert eine Zeichenfolge als base64.Warum wurden Javascript `atob()` und `btoa()` so benannt?

Dann warum wurden sie nicht wie base64Decode() und base64Encode() benannt? atob() und btoa() machen keinen Sinn, weil sie nicht semantisch sind.

Ich möchte den Grund wissen.

+35

Ich brauchte Jahre um zu erkennen, dass es "A zu B" war. Ich hatte die ganze Zeit über "a-tob" und "b-toa" gesprochen. – Ryan

+0

@Ryan Ich bin froh, dass es nicht nur ich war! –

+0

Zählen Sie mich rein. Ich dachte dasselbe :-) –

Antwort

62

Mit den Methoden atob() und btoa() können Autoren Inhalte in und aus der base64-Codierung umwandeln.

In dieser APIs für mnemonic Zwecke können die "b" für "binären" zu Stand betrachtet werden, und der "a" für "ASCII". In der Praxis jedoch, für hauptsächlich historischen Gründen, sind sowohl die Eingabe als auch die Ausgabe dieser Funktionen Unicode-Zeichenfolgen.

Von: http://www.w3.org/TR/html/webappapis.html#atob

+1

Dies und nach der C Tradition wie 'atoi()' etc. – Roope

+29

Aber es ist rückwärts. 'atob()' konvertiert Binär in ASCII und 'btoa()' konvertiert ASCII in Binär. – jtheletter

+10

ascii ist base64 und "atob" ist ascii zu binär. Sie haben dies aus beiden Antworten herausgelassen. also ist es nicht umgekehrt – AKnox

4

Ich kann nicht eine Quelle im Moment finden, aber es ist allgemein bekannt, dass in diesem Fall die b für ‚binären‘ steht, und das ein für ‚ASCII‘.

Daher werden die Funktionen tatsächlich genannt:

ASCII auf Binär für atob() und Binary für btoa() in ASCII.

Beachten Sie, dass es sich um eine Browser-Implementierung handelt, die für Legacy-/Abwärtskompatibilitätszwecke verwendet wurde. In Node.js zum Beispiel existieren diese nicht.

31

Um die bereits gegebenen Antworten zusammenzufassen:

  • atob steht für ASCII to binary
    • z.B .: atob("ZXhhbXBsZSELCg==") == "example!^K"
  • btoa steht für binary to ASCII
    • z.B .: btoa("\x01\x02\xfe\xff") == "AQL+/w=="

Warum A SCII und b inary:

  • ASCII (die a) das Produkt von base64 Codierung ist. Ein Text, der nur aus einer Untermenge von ASCII-Zeichen (*) besteht, die korrekt dargestellt und transportiert werden können (z.E-Mail-Körper),
  • binary (die b) ist jeder Strom von 0s und 1s (in JavaScript mit einem String-Typ dargestellt werden muß).

(*) in base64 diese sind beschränkt auf: A-Z, a-z, 0-9, +, / und = (padding, erst am Ende) https://en.wikipedia.org/wiki/Base64

P.S. Ich muss zugeben, ich selbst war anfangs durch die Namensgebung verwirrt und dachte, die Namen seien vertauscht. Ich dachte, dass b stehen für "base64 codierte Zeichenfolge" und a für "ein ny string": D.

Verwandte Themen