Dalam Javascript, window.atob()
metode menerjemahkan string base64 dan window.btoa()
metode mengkode a string
ke base64 .
Lalu mengapa mereka tidak diberi nama seperti base64Decode()
dan base64Encode()
?
atob()
dan btoa()
tidak masuk akal karena mereka tidak semantik sama sekali.
Saya ingin tahu alasannya.
javascript
Константин Ван
sumber
sumber
name
, biasanya mereka menggunakan nama panjang yang jelas sepertigetElementById
,addEventListener
Jawaban:
Metode
atob()
danbtoa()
memungkinkan penulis untuk mengubah konten ke dan dari pengkodean base64.Dari: http://www.w3.org/TR/html/webappapis.html#atob
sumber
atob()
mengkonversi biner ke ASCII, danbtoa()
mengubah ASCII menjadi biner.atob
ascii ke biner. mereka agak meninggalkan ini dari kedua jawaban. jadi tidak terbalikString
adalahBinary
?! Dan saya pikir sepanjang waktu, biner adalah sesuatu seperti 0 dan 1. Ini SANGAT BINGUNG!window.btoa
membaca argumennya sebagai data biner dan membaginya menjadi 6 bit untuk menyandikannya; itu benar, jadi penamaan itu masuk akal dalam sudut pandang. Namun, juga,window.btoa
hanya menggunakan string sebagai argumennya! :(window.btoa
hanya menggunakan string sebagai argumennya!" <Itu benar tapi string di sini hanya representasi data. Seperti jika Anda mencoba untuk membuka gambar di notepad itu akan ditampilkan sebagai string tetapi masih berupa data biner.btoa
Keuntungan utama adalah bahwa tidak peduli apa format string, itu hanya memperlakukannya sebagai biner. Ini hanya kebetulan bahwa dalam kebanyakan kasus string terjadi menjadi string biasa.Untuk meringkas jawaban yang sudah diberikan:
atob
berdiri untukASCII to binary
atob("ZXhhbXBsZSELCg==") == "example!^K"
btoa
berdiri untukbinary to ASCII
btoa("\x01\x02\xfe\xff") == "AQL+/w=="
Mengapa A SCII dan b notaris:
ASCII
(thea
) adalah hasil daribase64
encoding. Sebuah aman teks hanya terdiri dari subset dari karakter ascii (*) yang dapat benar terwakili dan diangkut (tubuh misalnya email ini),binary
(theb
) adalah sembarang aliran 0s dan 1s (dalam javascript itu harus diwakili dengan tipe string).(*) Di
base64
ini terbatas pada:A-Z
,a-z
,0-9
,+
,/
dan=
(padding, hanya di akhir) https://en.wikipedia.org/wiki/Base64PS Saya harus mengakui bahwa saya sendiri pada awalnya bingung dengan penamaan dan berpikir nama-nama itu ditukar. Saya pikir
b
singkatan dari " b ase64 encoded string" dana
untuk " a ny string" : D.sumber
btoa
masih secara teknis ASCII, tidak ada pembenaran untuk namaatob
yang hanya menerima base64 sebagai input.Saya tahu ini sudah tua, tetapi baru-baru ini muncul di Twitter, dan saya pikir saya akan membagikannya karena ini resmi.
Saya:
Dia:
Jika tautan Minix rusak, inilah konten halaman manual:
Sumber: Brendan Eich, pencipta JavaScript. https://twitter.com/BrendanEich/status/998618208725684224
sumber
Saya tidak dapat menemukan sumber saat ini, tetapi sudah menjadi rahasia umum bahwa dalam kasus ini, b adalah singkatan dari 'binary', dan a untuk 'ASCII'.
Oleh karena itu, fungsinya sebenarnya dinamai:
ASCII ke Biner untuk
atob()
, dan Biner ke ASCII untukbtoa()
.Catatan ini adalah implementasi browser, dan dibiarkan untuk tujuan legacy / kompatibilitas mundur. Dalam Node.js misalnya, ini tidak ada.
sumber
Buffer.from("Hello World").toString('base64')
&Buffer.from("SGVsbG8gV29ybGQ=", 'base64').toString('ascii')