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.
- Enkode teks menjadi byte. Mode UTF-8 menjalankan masukan melalui
new TextEncoder().encode(text), yang mengembalikanUint8Arraydari nilai byte. Mode Latin-1 mengambil delapan bit rendah dari setiap unit kode melaluicharCodeAt(0) & 0xFF, yang merupakan konversi yang dilakukan codec ISO-8859-1 lama. - 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. - 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.
- Dekode secara terbalik. Mode Hex → Teks menghapus setiap spasi, tanda hubung, dan awalan
0xdari masukan, memvalidasi karakter yang tersisa terhadap/^[0-9a-fA-F]+$/, menolak string dengan jumlah digit ganjil, dan membangun ulangUint8Arraydari pasangan byte berurutan. Mode UTF-8 mendekode array tersebut dengannew TextDecoder("utf-8", { fatal: true }); mode Latin-1 memetakan setiap byte keString.fromCharCode(b). - 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.