§

Options

Mode
Pengelompokan hex
Awalan 0x
Huruf
Enkoding teks
§

Masukan

§

Keluaran

Insinyur infrastruktur BCA menggunakan konversi hex ↔ ASCII saat menganalisis pesan pembayaran ISO 8583 dari terminal ATM — header protokol terbaca jelas dalam hex sementara field data kartu nasabah sering menyimpan teks ASCII di dalam bingkai biner. Tim SCADA Pertamina mengandalkan alat ini untuk menginspeksi serial frame Modbus dari sensor tekanan ladang minyak lepas pantai, di mana offset byte harus dicocokkan dengan presisi tinggi. Teknisi avionik Garuda Indonesia menggunakannya untuk mendekode frame ARINC-429 dari bus kokpit pesawat saat pemeliharaan armada in-house, mengubah byte hex menjadi label teks yang dapat dibaca tanpa mengimpor ulang data ke perangkat lunak avionik berlisensi.

Cara kerja enkoding hex

Setiap karakter di halaman disimpan sebagai satu atau lebih byte. Enkoding hex menulis ulang byte tersebut dalam basis 16, dua karakter per byte, sehingga aliran byte dapat dibaca tanpa alat khusus.

  1. Enkode teks menjadi byte. Mode UTF-8 menjalankan masukan melalui new TextEncoder().encode(text), yang mengembalikan Uint8Array dari nilai byte. Mode Latin-1 mengambil delapan bit rendah dari setiap unit kode melalui charCodeAt(0) & 0xFF, yang merupakan konversi yang dilakukan codec ISO-8859-1 lama.
  2. Tampilkan setiap byte sebagai dua digit hex. Setiap byte dipetakan ke dua digit hex melalui byte.toString(16).padStart(2, "0"). Tombol huruf memilih huruf besar (A-F) atau huruf kecil (a-f) pada keluaran.
  3. Terapkan pengelompokan dan awalan. Pengelompokan menyisipkan pemisah antar byte: spasi tunggal, tanda hubung, atau spasi setiap empat byte. Awalan 0x dapat ditambahkan sekali pada seluruh string (pengelompokan Tanpa) atau per byte (pengelompokan Spasi), sesuai konvensi yang diharapkan oleh array C dan alat diff biner.
  4. Dekode secara terbalik. Mode Hex → Teks menghapus setiap spasi, tanda hubung, dan awalan 0x dari masukan, memvalidasi karakter yang tersisa terhadap /^[0-9a-fA-F]+$/, menolak string dengan jumlah digit ganjil, dan membangun ulang Uint8Array dari pasangan byte berurutan. Mode UTF-8 mendekode array tersebut dengan new TextDecoder("utf-8", { fatal: true }); mode Latin-1 memetakan setiap byte ke String.fromCharCode(b).
  5. Mode langsung untuk iterasi cepat. Mode langsung aktif secara default. Setiap penekanan tombol menjadwalkan konversi ulang dengan debounce 150 md sehingga Anda dapat menempel, mengedit, dan melihat panel lain diperbarui tanpa mengeklik tombol Konversi.

Mengapa menggunakan konverter hex

  • Men-debug protokol biner. Format kabel seperti Modbus, DNP3, dan CoAP menyimpan header mereka di offset byte tertentu. Membaca frame yang ditangkap sebagai hex menampilkan setiap field sekilas, dan membalik byte yang sama ke ASCII memunculkan payload teks biasa yang berada bersama bingkai biner.
  • Bekerja dengan firmware tertanam. Probe JTAG dan SWD melaporkan isi memori sebagai hex. Menerjemahkan suatu wilayah memori ke ASCII menemukan string tertanam (jalur file, pesan kesalahan, tanda tangan vendor) yang sering menunjukkan lokasi Anda di firmware.
  • Membaca tangkapan paket. Wireshark dan tcpdump keduanya dilengkapi panel byte yang mencetak setiap paket sebagai hex di kiri dan ASCII di kanan. Mengonversi cuplikan di sini memungkinkan Anda menyalin blob hex dari laporan bug atau log obrolan dan membaca apa yang sebenarnya dikatakan byte tersebut tanpa mengimpornya kembali ke alat tangkapan.
  • Diff tingkat byte. Membandingkan dua file biner sering kali berujung pada menemukan byte mana yang berubah. Mengonversi kedua sisi ke hex dengan pengelompokan yang konsisten membuat diff sejajar di editor teks, di mana alat diff bawaan dapat menyorot byte yang berubah.

Aplikasi umum

Konversi hex ↔ ASCII muncul di rekayasa balik, keamanan, dan pekerjaan tertanam setiap kali aliran byte lebih dari sekadar payload teks.

  • Rekayasa balik: ambil dump hex dari biner yang tahan strings, pilih rentang yang didekode sebagai ASCII yang dapat dicetak, dan gunakan string tersebut sebagai jangkar lokasi Anda di disassembly.
  • Forensik jaringan: salin payload satu paket dari Wireshark sebagai hex, tempel di sini, dan baca teks lapisan aplikasi tanpa mengekspor seluruh tangkapan.
  • Penanganan materi kriptografi: kunci, IV, atau tag HMAC sering dikirim sebagai string hex. Mendekode kembali ke byte mengonfirmasi panjangnya sesuai algoritma (16 byte untuk AES-128, 32 untuk AES-256) sebelum Anda memasangnya ke konfigurasi.

Contoh langkah demi langkah

Pilih Teks → Hex, UTF-8, huruf kecil, pengelompokan Spasi-setiap-byte, awalan nonaktif. Ketik Hi: keluaran terbaca 48 69. Aktifkan awalan dan ubah pengelompokan ke Tanpa, masukan yang sama ditampilkan sebagai 0x4869. Tempel emoji 😀 sebagai masukan dan mode UTF-8 menghasilkan f0 9f 98 80 — empat byte untuk satu code point, itulah mengapa emoji sering memperbesar ukuran transmisi. Beralih ke Hex → Teks dan tempel 0x48-65-6C 6C 6F: parser menghapus awalan, tanda hubung, dan spasi lalu membangun ulang Hello.

FAQ

Apa itu enkoding hex?

Enkoding hex (atau enkoding heksadesimal) menulis aliran byte dalam basis 16, dua karakter ASCII per byte. Setiap digit hex mencakup empat bit, jadi dua digit mencakup satu byte delapan bit. Alfabet berjalan 0-9 lalu A-F (atau a-f); hurufnya semata-mata pilihan presentasi dan dekoder menerima keduanya. Hex adalah cara standar untuk menulis byte mentah dalam spesifikasi protokol, keluaran debugger, dan kunci kripto karena dua kali lebih ringkas dari biner dan menghindari masalah karakter tidak dapat dicetak dari byte mentah dalam teks.

Mengapa emoji saya menjadi 4 byte dalam hex?

UTF-8 adalah enkoding dengan panjang variabel. Karakter ASCII (U+0000 hingga U+007F) membutuhkan satu byte, suplemen Latin-1 membutuhkan dua, sebagian besar code point BMP lain membutuhkan tiga, dan karakter di atas U+FFFF — termasuk sebagian besar emoji — membutuhkan empat. Wajah tersenyum 😀 adalah U+1F600 dan diencode menjadi F0 9F 98 80. Jika Anda membutuhkan tampilan byte dengan lebar tetap, beralih ke Latin-1 — tetapi Latin-1 hanya mencakup 256 code point pertama, jadi karakter di luar rentang itu tidak dapat dibolak-balik.

Apakah ini mendukung Latin-1 / ISO-8859-1?

Ya. Ubah opsi Enkoding teks ke Latin-1 (ISO-8859-1). Enkoding mengambil delapan bit rendah dari setiap unit kode JavaScript (charCodeAt(0) & 0xFF), yang cocok dengan pemetaan satu byte lama. Dekoding menggunakan String.fromCharCode(byte) untuk setiap byte. Gunakan Latin-1 saat Anda bekerja dengan keluaran dari sistem Windows-1252 lama atau pra-Unicode di mana setiap byte mewakili tepat satu karakter.

Apakah konversi dilakukan di browser saya?

Ya. Konverter menjalankan TextEncoder, TextDecoder, dan parser kecil sebagai halaman statis tunggal. Tidak ada unggahan, tidak ada panggilan API, dan tidak ada analitik tentang apa yang Anda tempel — hanya metrik muat halaman standar yang dibagikan di seluruh situs. Byte hex yang sama yang Anda lihat di sini adalah yang akan dihasilkan skrip Node atau fungsi Lambda terhadap masukan yang sama.

Konversi hex ↔ ASCII adalah pekerjaan kecil yang dilakukan beberapa kali sehari oleh siapa pun yang membaca protokol biner atau firmware tertanam. Melakukannya di tab browser, dengan encoder native yang sama yang sudah dimiliki Node dan V8, membuat pekerjaan cepat dan aliran byte tetap di mesin Anda.