Cara menggunakan
- Ketik atau tempel teks ke kolom masukan.
- Setiap pengodean diperbarui saat Anda mengetik: biner, oktal, desimal, hex, varian Base32, Base36 hingga Base91, uuencode, dan xxencode.
- Bandingkan keluarannya untuk melihat mana yang paling pendek atau yang hanya memakai karakter yang dapat Anda terima.
- Klik Salin di samping hasil yang Anda perlukan.
Semua pengodean dari satu masukan
Setiap pengodean di halaman ini mengubah byte yang sama menjadi rangkaian karakter yang berbeda. Melihatnya secara berdampingan adalah cara tercepat untuk memilih pengodean bagi sebuah proyek, mengenali string yang Anda temukan di log atau file konfigurasi, atau mempelajari perbedaan antarformat. Teks Anda dienkode sebagai byte UTF-8, sehingga satu huruf beraksen dihitung dua byte dan satu karakter Tionghoa tiga byte. Semuanya berjalan di browser Anda.
- Angka per byte. Biner, oktal, dan desimal menulis setiap byte secara terpisah. Mudah dibaca, tetapi panjang.
- Kelompok bit. Hex, Base32 (beserta Base32hex, Crockford, dan z-base-32), Base64, dan Base64URL memberi setiap karakter jumlah bit yang tetap, sehingga panjang keluaran hanya bergantung pada panjang masukan.
- Bilangan besar. Base36, Base58, dan Base62 memperlakukan seluruh masukan sebagai satu bilangan bulat besar. Panjangnya bisa berselisih satu karakter tergantung nilainya, dan byte nol di awal dipertahankan sebagai karakter di awal.
- Blok. Base45 mengubah 2 byte menjadi 3 karakter, Ascii85, Z85, dan Base85 mengubah 4 byte menjadi 5, sedangkan Base91 memadatkan 13 atau 14 bit ke dalam setiap pasang karakter.
- Baris. uuencode dan xxencode adalah format lama untuk email dan Usenet yang menulis data per baris, masing-masing diawali karakter penanda panjang.
Perbandingan ukuran keluaran
Berapa karakter yang diperlukan setiap pengodean per byte masukan, dan berapa panjang nilai 32 byte, seperti hash SHA-256 atau kunci publik Ed25519, setelah dienkode:
| Pengodean | Karakter per byte | 32 byte menjadi |
|---|---|---|
| Base16 (hex) | 2,0 | 64 |
| Base32 | 1,6 | 56 (52 tanpa padding) |
| Base36 | sekitar 1,55 | 49 atau 50 |
| Base45 | 1,5 | 48 |
| Base58 | sekitar 1,37 | 43 atau 44 |
| Base62 | sekitar 1,34 | 42 atau 43 |
| Base64 | sekitar 1,33 | 44 (43 tanpa padding) |
| Base85 | 1,25 | 40 |
| Base91 | sekitar 1,23 | 39 atau 40 |
Beralih dari hex ke Base64 menghemat sepertiga panjangnya. Melangkah lebih jauh, dari Base64 ke Base91, hanya menghemat sekitar 8% lagi.
Memilih pengodean yang tepat
Keluaran terpendek belum tentu yang terbaik. Ascii85 dapat berisi tanda kutip dan garis miring terbalik, dan Base91 dapat berisi tanda kutip ganda, sehingga keduanya mungkin perlu di-escape di JSON, HTML, atau perintah shell. Pikirkan di mana string itu akan dipakai:
- URL dan nama file: Base64URL, Base58, atau Base62.
- Dibacakan atau diketik manual: Crockford Base32 atau Base58, yang tidak memakai karakter yang mirip satu sama lain.
- Sistem yang tidak peka huruf besar-kecil: hex, Base32, atau Base36.
- Kode QR: Base45, yang hanya memakai karakter dari mode alfanumerik QR.
- Teks ringkas di PDF, Git, atau ZeroMQ: Ascii85, Base85, atau Z85.
- Kompatibilitas maksimal: Base64, yang didukung hampir semua bahasa pemrograman dan platform.
Pertanyaan yang sering diajukan
Pengodean mana yang menghasilkan keluaran terpendek?
Di antara pengodean di halaman ini, Base91 adalah yang paling ringkas dengan sekitar 1,23 karakter per byte, disusul Ascii85, Z85, dan Base85 dengan 1,25. Base64 memerlukan sekitar 1,33, tetapi dukungannya jauh lebih luas, itulah sebabnya Base64 biasanya menjadi pilihan default.
Mengapa panjang hasil Base58 dan Base62 berbeda-beda untuk masukan berukuran sama?
Keduanya mengonversi seluruh masukan sebagai satu bilangan besar, sehingga panjangnya bergantung pada nilainya, tidak hanya pada ukurannya. Setiap byte nol di awal juga menambah satu karakter di awal. Hex, Base32, dan Base64 selalu menghasilkan panjang yang sama untuk jumlah byte yang sama.
Bisakah saya mendekode string di halaman ini?
Mengapa keluaran biner begitu panjang?
Biner menulis 8 digit untuk setiap byte, ditambah pemisah, sehingga panjangnya setidaknya empat kali hex. Biner dimaksudkan untuk melihat bit satu per satu, bukan untuk menyimpan atau mengirim data.
Apakah teks saya dikirim ke server?
Tidak. Semua pengodean dihitung oleh JavaScript di browser Anda, dan teks tidak pernah meninggalkan perangkat Anda.