§

Options

Mod
Pengelompokan hex
Awalan 0x
Huruf
Pengekodan teks
§

Masukan

§

Keluaran

Jurutera dan pentadbir sistem di Malaysia menggunakan penukaran hex ↔ ASCII apabila memeriksa bingkai protokol rangkaian dalam Wireshark, menyemak kandungan memori dari dump firmware tertanam, atau mengesahkan bahan kriptografi yang dihantar sebagai rentetan hex. Penukar ini mengendalikan terjemahan yang sama tanpa meninggalkan tab pelayar, memastikan data sensitif kekal pada peranti anda.

Cara pengekodan hex berfungsi

Setiap aksara pada halaman disimpan sebagai satu atau lebih bait. Pengekodan hex menulis semula bait tersebut dalam asas 16, dua aksara setiap bait, supaya strim bait boleh dibaca tanpa alat khas.

  1. Kodkan teks kepada bait. Mod UTF-8 menjalankan input melalui new TextEncoder().encode(text), yang mengembalikan Uint8Array nilai bait. Mod Latin-1 mengambil lapan bit rendah setiap unit kod melalui charCodeAt(0) & 0xFF, yang merupakan penukaran yang dilakukan oleh kodek ISO-8859-1 lama.
  2. Render setiap bait sebagai dua digit hex. Setiap bait dipetakan kepada dua digit hex melalui byte.toString(16).padStart(2, "0"). Togol huruf memilih huruf besar (A-F) atau huruf kecil (a-f) pada huruf output.
  3. Gunakan pengelompokan dan awalan. Pengelompokan memasukkan pemisah antara bait: satu ruang, sengkang, atau ruang setiap empat bait. Awalan 0x boleh ditambah sekali kepada keseluruhan rentetan (tiada pengelompokan) atau setiap bait (pengelompokan ruang), memadankan konvensyen yang dijangka oleh tatasusunan C dan alat diff binari.
  4. Nyahkodkan secara songsang. Mod Hex → Teks menyaring setiap ruang, sengkang, dan awalan 0x daripada input, mengesahkan aksara selebihnya terhadap /^[0-9a-fA-F]+$/, menolak rentetan panjang ganjil, dan membina semula Uint8Array daripada pasangan bait berturut-turut. Mod UTF-8 menyahkod tatasusunan itu dengan new TextDecoder("utf-8", { fatal: true }); mod Latin-1 memetakan setiap bait kepada String.fromCharCode(b).
  5. Mod langsung untuk lelaran pantas. Mod langsung dihidupkan secara lalai. Setiap ketukan kekunci menjadualkan penukaran semula dengan debounce 150 ms supaya anda boleh menampal, mengedit, dan melihat anak tetingkap lain dikemas kini tanpa mengklik butang Tukar.

Mengapa menggunakan penukar hex

  • Penyahpepijatan protokol binari. Format wayar seperti Modbus, DNP3, dan CoAP membungkus pengepala mereka ke dalam offset bait tertentu. Membaca bingkai yang ditangkap sebagai hex menunjukkan setiap medan sekilas, dan membalikkan bait yang sama kepada ASCII mendedahkan sebarang muatan teks biasa yang duduk bersebelahan dengan bingkai binari.
  • Bekerja dengan firmware tertanam. Prob JTAG dan SWD melaporkan kandungan memori sebagai hex. Menterjemahkan kawasan memori kepada ASCII mendedahkan rentetan terbenam (laluan fail, mesej ralat, tandatangan vendor) yang sering menunjukkan di mana dalam firmware anda sedang melihat.
  • Membaca tangkapan paket. Wireshark dan tcpdump kedua-duanya menghantar anak tetingkap bait yang mencetak setiap paket sebagai hex di kiri dan ASCII di kanan. Menukar coretan di sini membolehkan anda menyalin blob hex daripada laporan pepijat atau log sembang dan membaca apa yang sebenarnya dikatakan oleh bait tanpa mengimport semula ke dalam alat tangkapan.
  • Diff peringkat bait. Membandingkan dua fail binari sering bergantung kepada mengesan bait yang berubah. Menukar kedua-dua pihak kepada hex dengan pengelompokan yang konsisten menjadikan diff sejajar dalam editor teks, di mana alat diff terbina dalam boleh menyerlahkan bait yang berubah.

Aplikasi biasa

Penukaran hex ↔ ASCII muncul merentas kejuruteraan songsang, keselamatan, dan kerja tertanam apabila strim bait lebih daripada sekadar muatan teks.

  • Kejuruteraan songsang: ambil dump hex daripada binari tahan rentetan, pilih deretan yang disahkodkan sebagai ASCII bercetak, dan gunakan rentetan tersebut untuk menanda tempat anda dalam pembongkaran.
  • Forensik rangkaian: salin satu muatan paket daripada Wireshark sebagai hex, tampalkan di sini, dan baca teks lapisan aplikasi tanpa mengeksport keseluruhan tangkapan.
  • Pengendalian bahan kripto: kunci, IV, atau tag HMAC sering dihantar sebagai rentetan hex. Menyahkodkan kembali kepada bait mengesahkan panjang sepadan dengan algoritma (16 bait untuk AES-128, 32 untuk AES-256) sebelum anda menghubungkannya ke dalam konfigurasi.

Contoh yang dikerjakan

Pilih Teks → Hex, UTF-8, huruf kecil, pengelompokan Ruang-setiap-bait, awalan mati. Taip Hi: output berbunyi 48 69. Hidupkan awalan dan tukar pengelompokan kepada Tiada dan input yang sama dirender sebagai 0x4869. Tampalkan emoji 😀 sebagai input dan mod UTF-8 mengrender f0 9f 98 80 — empat bait untuk satu titik kod, itulah sebabnya emoji sering mengembungkan saiz penghantaran. Tukar kepada Hex → Teks dan tampalkan 0x48-65-6C 6C 6F: penghurai menyaring awalan, sengkang, dan ruang serta membina semula Hello.

FAQ

Apakah pengekodan hex?

Pengekodan hex (atau pengekodan heksadesimal) menulis strim bait dalam asas 16, dua aksara ASCII setiap bait. Setiap digit hex merangkumi empat bit, jadi dua digit merangkumi satu bait lapan bit. Abjad berjalan 0-9 kemudian A-F (atau a-f); huruf adalah pilihan persembahan semata-mata dan penyahkod menerima sama ada. Hex adalah cara piawai untuk menulis bait mentah dalam spec protokol, output debugger, dan kunci kripto kerana ia dua kali lebih padat daripada binari dan mengelakkan masalah aksara tidak bercetak daripada bait mentah dalam teks.

Mengapa emoji saya menjadi 4 bait dalam hex?

UTF-8 adalah pengekodan panjang berubah-ubah. Aksara ASCII (U+0000 hingga U+007F) mengambil satu bait, suplemen Latin-1 mengambil dua, kebanyakan titik kod BMP lain mengambil tiga, dan aksara di atas U+FFFF — termasuk kebanyakan emoji — mengambil empat. Muka tersenyum 😀 ialah U+1F600 dan dikodkan kepada F0 9F 98 80. Jika anda memerlukan paparan bait lebar tetap, tukar kepada Latin-1 — tetapi Latin-1 hanya meliputi 256 titik kod pertama, jadi sebarang aksara di luar julat tersebut tidak boleh perjalanan pergi-balik.

Adakah ini menyokong Latin-1 / ISO-8859-1?

Ya. Tukar pilihan Pengekodan Teks kepada Latin-1 (ISO-8859-1). Pengekodan mengambil lapan bit rendah setiap unit kod JavaScript (charCodeAt(0) & 0xFF), yang sepadan dengan pemetaan bait tunggal lama. Penyahkodan menggunakan String.fromCharCode(byte) untuk setiap bait. Gunakan Latin-1 apabila anda bekerja dengan output daripada sistem Windows-1252 atau pra-Unicode lama di mana setiap bait mewakili tepat satu aksara.

Adakah penukaran dilakukan di pelayar saya?

Ya. Penukar menjalankan TextEncoder, TextDecoder, dan penghurai kecil sebagai halaman statik tunggal. Tiada muat naik, tiada panggilan API, dan tiada analitik pada apa yang anda tampalkan — hanya metrik muatan halaman piawai yang dikongsi merentas tapak. Bait hex yang sama yang anda lihat di sini adalah apa yang akan dihasilkan oleh skrip Node atau fungsi Lambda terhadap input yang sama.

Penukaran hex ↔ ASCII adalah kerja kecil yang dilakukan beberapa kali sehari oleh sesiapa yang membaca protokol binari atau firmware tertanam. Melakukannya dalam tab pelayar, dengan pengekod asli yang sama yang sudah dihantar oleh Node dan V8, mengekalkan kerja yang pantas dan strim bait pada mesin anda.