Bahasa: Bahasa Indonesia

tools / hex

hex/

Konversi teks ke hex dan sebaliknya. Pilih UTF-8, GBK, UTF-16, dan lainnya; output bisa memakai pemisah, huruf besar, serta awalan 0x atau \x.

Teks

hex

Pertanyaan umum

Berapa byte satu karakter dalam hex (misalnya karakter Mandarin), dan mengapa hasilnya berbeda dengan alat lain?

Tergantung set karakter yang dipilih. Di UTF-8, karakter Mandarin yang umum memakai 3 byte, misalnya 中 adalah e4 b8 ad; di GBK dan GB2312 memakai 2 byte, 中 adalah d6 d0; emoji memakai 4 byte di UTF-8. Huruf Latin dan angka memakai 1 byte di UTF-8 maupun GBK, jadi hasilnya sama. Jika hasilnya berbeda dengan alat lain, periksa set karakter yang dipakai alat itu. Halaman ini memakai UTF-8 secara default.

Hex ke teks menampilkan pesan bahwa byte bukan teks yang valid, atau hasilnya berantakan. Apa yang harus dilakukan?

Artinya byte tersebut tidak dienkode dengan set karakter yang sedang dipilih, jadi coba set karakter lain. Untuk teks Mandarin, yang paling umum adalah UTF-8 dan GBK (perangkat lunak lama dan ekspor database sering memakai GBK); hex UTF-16 biasanya berisi banyak byte 00. Alat ini tidak pernah menampilkan byte yang tidak bisa didekode sebagai karakter kacau. Satu-satunya pengecualian adalah ISO-8859-1: setiap byte punya padanan karakter sehingga tidak pernah error, tetapi teks Mandarin akan berubah menjadi karakter kacau. GBK dan GB2312 sama-sama didekode dengan dekoder GB18030 bawaan browser, yang lebih longgar daripada Python atau Java, sehingga memilih GB2312 pun bisa mendekode karakter yang hanya ada di GBK. Jika byte tersebut memang bukan teks sejak awal (gambar, data terenkripsi, nilai hash), set karakter apa pun tidak akan bisa mendekodenya.

Penulisan apa saja yang dikenali oleh hex ke teks?

Huruf besar maupun kecil sama-sama boleh. Antarbyte bisa dipisahkan dengan spasi, baris baru, tab, titik dua, koma, atau tanda hubung, atau tidak dipisahkan sama sekali, dan setiap byte boleh diawali 0x atau \x, jadi 0x48,0x65 dan \x48\x65 bisa langsung didekode. Jumlah digit di antara dua pemisah harus genap, jadi tulis 0x01, bukan 0x1. Karakter selain 0-9 dan a-f juga menimbulkan error. Kedua jenis error itu menunjukkan posisi karakternya. Penulisan seperti U+4E2D dan %E4%B8%AD tidak dikenali; untuk URL encoding, gunakan alat URL di situs ini.

Bagaimana cara mendapatkan format seperti 0x48,0x65 atau \x48\x65?

Atur pemisah ke "," dan awalan ke "0x" untuk mendapatkan 0x48,0x65, yang bisa langsung ditempel ke array byte C atau Java. Atur pemisah ke "Tanpa" dan awalan ke "\x" untuk mendapatkan \x48\x65, yaitu penulisan byte di string Python dan C. Awalan ditambahkan di depan setiap byte, jadi "Tanpa" ditambah 0x menghasilkan 0x480x65, yang jarang berguna. "Huruf besar" hanya memengaruhi a-f; huruf x pada 0x tetap huruf kecil.

Mengapa hasil UTF-16 diawali feff, dan mengapa berbeda dengan alat lain?

UTF-16 mengikuti cara Java: diawali FE FF (byte order mark) dan berformat big-endian, sehingga 中 menjadi fe ff 4e 2d. UTF-16BE tanpa tanda itu adalah 4e 2d; salin hasilnya lalu hapus dua byte pertama. UTF-32 berformat big-endian tanpa tanda, jadi 中 adalah 00 00 4e 2d. Saat mendekode, UTF-16 menerima awalan FE FF (big-endian) atau FF FE (little-endian), dan dianggap big-endian jika tidak ada tanda.

Mengapa teks Mandarin menimbulkan error jika memakai ASCII atau ISO-8859-1?

ASCII hanya mencakup 0 sampai 127, dan ISO-8859-1 hanya sampai U+00FF (huruf Eropa Barat beraksen, tanpa aksara Mandarin). Karakter di luar rentang itu menimbulkan pesan error: Karakter "中" tidak bisa dikodekan dalam ASCII. Karakter itu tidak diam-diam diganti menjadi ? seperti yang dilakukan getBytes di Java. GBK dan GB2312 berperilaku sama: emoji dan karakter langka yang tidak ada di tabel kode menimbulkan error. Ganti ke UTF-8 atau GB18030 untuk mengonversinya.

Apakah spasi dan baris baru pada input ikut dikonversi?

Pada teks ke hex, ya. Setiap karakter di kotak input ikut dikonversi, termasuk spasi dan baris baru di awal maupun akhir: spasi adalah 20 dan baris baru adalah 0a. Kotak teks browser menyeragamkan baris baru menjadi \n, jadi baris baru pada teks multibaris menjadi 0a, bukan 0d 0a; ubah sendiri hasilnya jika Anda membutuhkan akhir baris gaya Windows. Pada hex ke teks, spasi di dalam hex diabaikan dan hanya byte yang dihitung, dan 0d 0a pada hasil juga ditampilkan sebagai satu baris baru.

Apakah isi yang saya masukkan diunggah?

Tidak. Konversi berjalan di browser Anda, tanpa mengirim permintaan jaringan apa pun dan tanpa menyimpan apa pun.