JavaScript/WindowOrWorkerGlobalScope/atob
Aus SELFHTML-Wiki
Die Funktion atob() enkodiert einen Base64-ASCII-String in einen (binären) String (daher auch atob: ascii to binary).
Syntax
atob(String)
-
String
: ein Base64-String
Inhaltsverzeichnis
Anwendungsbeispiele
Einfaches Anwendungsbeispiel
Beispiel
ansehen …
document.addEventListener('DOMContentLoaded', function(evt) {
document.getElementById('enc').addEventListener('click', decode);
});
function decode() {
let ein = document.getElementById('ein').value;
let b64 = btoa(ein);
let ab = ein === atob(b64) ? '☑' : '☒';
document.getElementById('aus').textContent = ab + ' ' + b64;
}
Beachten Sie: Dieses Beispiel funktioniert nur für Strings, in denen jedes Zeichen auch nur ein Byte belegt. Die Eingabe von Zeichen wie
↓
wirft daher einen InvalidCharacterError.Unicode-Strings
Die Base64-Daten können beliebige Binärdaten sein, auch Mehrbyte-Strings. Das Beispiel von btoa können wir daher übertragen[1]:
Beispiel
ansehen …
document.addEventListener('DOMContentLoaded', function(evt) {
document.getElementById('encu').addEventListener('click', decode);
});
function decode() {
let s = document.getElementById('einu').value;
let uc = new Uint16Array(s.length);
for (let i = 0; i < uc.length; ++i) {
uc[i] = s.charCodeAt(i);
}
let b64 = btoa(String.fromCharCode(...new Uint8Array(uc.buffer)));
document.getElementById('ausb64').textContent = b64;
let a64 = atob(b64);
document.getElementById('ausb').value = a64;
let b = new Uint8Array(a64.length);
for (let i = 0; i < b.length; ++i) {
b[i] = a64.charCodeAt(i);
}
document.getElementById('ausu').value =
String.fromCharCode(...new Uint16Array(b.buffer));
}
Dieses Beispiel stellt einen einfachen (einzeiligen) Base64-Codierer dar, der auch auf Unicode-Zeichen operiert: Die Unicode-Eingabe aus dem Eingabefeld wird in Byte-Array konvertiert und dann base64-codiert im
output
-Element ausgegeben. Die Base64-Daten werden dann schrittweise dekodiert: Im Ausgabefeld Binär ist das Zwischenergebnis von atob
zu sehen, in Unicode dann der komplett dekodierte String. Für die Eingabe →
ergeben sich in Base 64 kiE=
, nach atob !
(hexadezimal C2 92 21
) und komplett dekodiert wieder →
.
output
-Element ausgegeben. Zur Kontrolle wird der base64-kodierte String wieder enkodiert; sind Ein- und Ausgabe gleich, wird ein Häkchen☑
angezeigt, ansonsten ein☒
.