Hitung dari kelompok tiga byte dan padding
Base64 standar RFC 4648 menyatakan tiga byte sebagai empat karakter. Kelompok akhir satu byte memerlukan ==, dua byte =, dan tiga byte tanpa padding. Dengan padding tanpa baris baru tambahan, panjangnya 4 * Math.ceil(n / 3), dengan n jumlah byte input. Nol byte menghasilkan panjang nol.
n = new TextEncoder().encode(input).length
length = 4 * Math.ceil(n / 3)
f 1 Zg== 4
fo 2 Zm8= 4
foo 3 Zm9v 4
foob 4 Zm9vYg== 8Contoh tetap ini dijalankan dengan fungsi nyata. f, fo dan foo menghasilkan empat karakter meski panjang input berbeda; paddingnya berbeda. foob berisi empat byte dan menghasilkan delapan karakter. Padding menunjukkan format kelompok akhir, bukan karakter yang ditambahkan ke teks asli.
Bedakan karakter, byte dan baris baru
Moyoutil memakai TextEncoder untuk mengubah input menjadi byte UTF-8. Contoh 가 memakai tiga byte dan menjadi 6rCA, empat karakter. f diikuti baris baru LF memakai dua byte dan menjadi Zgo=. Spasi dan baris baru dalam sumber adalah data saat encoding. Header HTTP, pembungkus JSON dan awalan URL data tidak termasuk rumus.
base64("가") // 6rCA
base64("f\n") // Zgo=Masukkan teks sumber lalu pilih Encode. Untuk decode, masukkan hanya keluaran Base64 standar. Decode menghapus whitespace input; encode mempertahankan whitespace sumber. Base64URL dengan - dan _ serta pemulihan file biner sembarang tidak didukung. /w== bisa dibaca sebagai Base64 tetapi menghasilkan kesalahan karena bukan teks UTF-8. Mengubah input menghapus hasil lama dan menonaktifkan salin; lakukan konversi lagi.
Pertanyaan yang Sering Diajukan
Apakah ukuran selalu bertambah sekitar 33%?
Untuk input besar rasionya mendekati 4/3, tetapi padding sangat memengaruhi input kecil. Satu byte menjadi empat karakter. Hitung byte dan periksa padding untuk panjang tepat.
Apakah layar mengubah input kosong menjadi nol karakter?
Rumus mengembalikan nol untuk nol byte, tetapi layar Moyoutil meminta isi saat input kosong. Batas rumus dan kebijakan input layar berbeda.