Konverter teks ke heksadesimal
Ubah teks ke heksadesimal — bita UTF-8 atau UTF-16-nya, berspasi, sebagai larik, ter-escape, atau sebagai dump — dan baca kembali bentuk mana pun sebagai teks.
48 61 6C 6F
String sebagai bita tempat ia disimpan
Setiap string yang ditangani program, di baliknya, adalah rangkaian bita, dan halaman ini menuliskannya dalam heksadesimal, dua digit untuk setiap bita. Ketik Hello dan Anda mendapatkan 48 65 6C 6C 6F, satu bita per huruf dengan spasi sesudah setiap bita kecuali yang terakhir. Setel arah ke “Heksadesimal ke teks” sebagai gantinya lalu tempel heksadesimal dari log, basis data, atau debugger, dan Anda mendapatkan kembali teks yang dimuat bita-bita itu.
Satu teks menghasilkan bita yang berbeda dalam pengodean yang berbeda, dan satuanlah yang menentukan apa arti digit di halaman ini. Awalnya satuan itu UTF-8, pengodean web, tempat H adalah bita 48 dan א adalah bita D7 90. UTF-16 LE dan UTF-16 BE memakai dua bita untuk masing-masing, dalam urutan yang berlawanan — 48 00 atau 00 48 untuk H — sedangkan “Titik kode” sama sekali tidak memakai bita dan menulis nomor yang ditetapkan Unicode, U+05D0 untuk א. Satuan apa pun yang disetel berlaku bagi heksadesimal yang Anda baca sama halnya bagi teks yang Anda tulis, dan satuan itu tetap tersetel: jika heksadesimal yang ditempel menyerupai milik satuan lain, halaman ini mungkin menyarankan satuan itu, tetapi hanya klik Anda yang mengubahnya.
Dua digit heksadesimal untuk setiap bita
Bita menampung salah satu dari 256 nilai, 0 sampai 255. Heksadesimal menghitung per enam belas, dengan digit 0 sampai 9 lalu A sampai F untuk sepuluh sampai lima belas, dan enam belas kali enam belas adalah 256, jadi dua digit heksadesimal menamai setiap bita dan digit ketiga tidak pernah diperlukan: 00 adalah 0, 7F adalah 127, dan FF adalah 255. H adalah 72, empat kali enam belas ditambah delapan, jadi bitanya 48.
Setiap digit heksadesimal mewakili tepat empat bit, separuh bita: angka 4 pada 48 adalah 0100 dan angka 8 adalah 1000, dan berdampingan keduanya adalah delapan bit H, 01001000. Halaman ini mempertahankan kedua digit setiap bita, jadi line feed adalah 0A dan spasi adalah 20, dan karena setiap bita memakan lebar yang sama, heksadesimal dapat dibaca kembali tanpa apa pun di antara bita: 4869 adalah Hi.
Huruf dalam heksadesimal berarti sama, baik huruf besar maupun kecil. Halaman ini menulis huruf besar kecuali Anda memilih “huruf kecil”, jadi é adalah C3 A9 atau c3 a9, dan halaman ini membaca keduanya, bahkan jika bercampur dalam satu tempelan.
Lima gaya, masing-masing dibentuk untuk tempat ia ditempel
Dalam heksadesimal, pemilih “Gaya” menata bita yang sama dengan lima cara, masing-masing untuk tempat yang dituju heksadesimal berikutnya. Untuk Hi, dua bita 48 dan 69:
- “Berspasi” memberi 48 69, dengan spasi di antara bita: paling mudah dibaca dan dihitung, dan gaya yang muncul saat halaman ini dibuka.
- “Rapat” memberi 4869, digitnya bersambung, untuk bidang atau parameter yang menerima nilai sebagai satu string heksadesimal.
- “Larik” memberi 0x48, 0x69, setiap bita berupa bilangan dengan 0x di depannya dan koma di antaranya, siap ditempel ke larik bita dalam C, C#, JavaScript, Python, atau Go.
- “Ter-escape” memberi \x48\x69, setiap bita sebagai \x dan dua digitnya, cara bita ditulis di dalam string C atau literal bita Python seperti b'\x48\x69'.
- “Dump heksadesimal” menata bita dalam baris-baris, dengan tempat setiap baris dimulai dan bita yang sama sebagai teks di sampingnya: bagian berikutnya membaca dump seperti itu.
Pembacaan menerima kembali kelima gaya itu, bersama cara penulisan lain yang membiarkan bita apa adanya: titik dua seperti pada 48:69, tanda hubung yang ditulis BitConverter.ToString milik .NET, seperti pada 48-69, 0x atau 0X di depan setiap bita, dan seluruh tempelan yang dibungkus sekali dalam tanda kurung, kurung siku, atau kurung kurawal, atau dalam tanda kutip. Gaya dan huruf besar-kecil hanya berpengaruh saat menulis, jadi kedua pemilih itu menghilang ketika arahnya “Heksadesimal ke teks”.
Ada satu jebakan pada “Ter-escape”. Dalam string JavaScript, atau dalam string Python biasa dan bukan literal bita, \x menamai karakter dan bukan bita, jadi \xD7\x90 di sana adalah dua karakter dan bukan א yang bita UTF-8-nya D7 90. Di luar ASCII, serahkan bitanya kepada sesuatu yang menerima bita.
Membaca dump heksadesimal, kolom demi kolom
Dump heksadesimal menata bita enam belas per baris, dengan kolom di setiap sisi untuk membantu Anda menemukannya. Ditulis dengan gaya “Dump heksadesimal”, Hello, World! dan line feed mengisi satu baris: pertama 00000000, yaitu offset, tempat bita pertama baris itu berada bila dihitung dari nol, dalam delapan digit heksadesimal; lalu keempat belas bita, delapan lalu enam dengan celah yang lebih lebar di antara kedua paruhnya; lalu |Hello, World!.|, bita yang sama sebagai karakter, dengan setiap bita di luar ASCII yang dapat dicetak ditampilkan sebagai titik, termasuk line feed tadi. Baris terakhir hanya berisi 0000000E, yaitu empat belas: tempat bita berikutnya akan berada, dan karena itu juga panjangnya. Itulah tata letak yang dicetak hexdump -C.
- Dengan “Heksadesimal ke teks” terpilih dan satuan apa pun selain “Titik kode”, dump heksadesimal yang ditempel hanya dibaca bitanya: kolom teks tidak ikut dibaca, tidak ada offset yang dibaca sebagai bita, dan pemberitahuan di bawah hasilnya mengatakan bahwa masukan diterima sebagai dump dan menyebut tata letaknya.
- Dua tata letak dibaca dengan cara itu: milik hexdump -C, dan apa yang dicetak xxd tanpa opsi, tempat titik dua mengikuti setiap offset dan bita berdiri dalam grup berisi empat digit. Heksadesimal polos yang dicetak xxd -p tidak memerlukan tata letak dan terbaca seperti heksadesimal lainnya.
- hexdump -C mencetak baris yang hanya berisi * sebagai pengganti baris-baris yang mengulang baris di atasnya, dan halaman ini mengisi kembali baris-baris itu dari offset di bawahnya, sehingga bitanya kembali lengkap.
- Setiap offset sesudah yang pertama harus cocok dengan bita di atasnya, termasuk panjang pada baris terakhir hexdump -C, dan baris dengan offset yang tidak cocok ditolak di sana alih-alih dibaca keliru: di situlah baris yang terlewat, bita yang hilang, atau offset yang salah ketik kelihatan. Apa yang tidak disusul offset mana pun tidak dapat diperiksa, sehingga dump heksadesimal yang kehilangan baris-baris pertamanya, atau ujung dump yang tidak disusul baris berisi panjangnya, karena xxd tidak menulis baris seperti itu, terbaca sebagai apa pun yang tersisa.
UTF-16 LE, dan mengapa setiap bita kedua bernilai 00
Windows menyimpan teks dalam UTF-16 dengan bita rendah lebih dulu, yaitu UTF-16 LE; di .NET namanya Encoding.Unicode, dan SQL Server menyimpan nilai NVARCHAR dengan cara yang sama. UTF-16 memberi setiap karakter hingga U+FFFF dua bita, dan untuk apa pun hingga U+00FF — huruf bahasa Inggris, angka, é, dan sisa Latin-1 — bita tingginya 00. Dengan bita rendah lebih dulu, nol itu jatuh sesudah setiap huruf: Hi adalah 48 00 69 00.
SQL Server menampilkan nilai VARBINARY sebagai 0x diikuti heksadesimalnya, jadi NVARCHAR yang berisi Hi, setelah dikonversi ke VARBINARY, tampil sebagai 0x48006900. Tempel itu di sini selagi UTF-8 terpilih dan teksnya keluar sebagai H, NUL, i, dan NUL, dan pemberitahuan di bawahnya mengatakan bahwa setiap bita kedua bernilai 00, seperti ketika teks beraksara Latin ditulis dalam UTF-16, bukan UTF-8, dengan “Beralih ke UTF-16 LE” di sampingnya. Tekan tombol itu dan bita yang sama terbaca Hi.
UTF-16 BE justru menaruh bita tinggi lebih dulu, jadi di sana Hi adalah 00 48 00 69, dan א, yang dalam UTF-16 LE adalah D0 05, menjadi 05 D0. Nol di tempat pertama setiap pasangan membuat pemberitahuan itu menawarkan UTF-16 BE. Pemberitahuan itu diam begitu ada karakter di atas U+00FF dalam teks, karena bita tinggi karakter itu bukan 00, dan ia hanya muncul di tempat setiap bita kedua memang 00.
Tanda urutan bita di awal
Teks bisa diawali U+FEFF, karakter yang tidak menampilkan apa pun dan ada di sana untuk menjadi tanda urutan bita. Dalam UTF-16, kedua bitanya menunjukkan urutan setiap pasangan sesudahnya, FF FE untuk UTF-16 LE dan FE FF untuk UTF-16 BE, dan dalam UTF-8 ia adalah tiga bita EF BB BF, penanda bahwa teks itu UTF-8, yang hanya punya satu urutan.
Halaman ini mempertahankan tanda seperti itu alih-alih membuangnya. Heksadesimal yang diawali tanda milik satuan terpilih sendiri terbaca sebagai teks yang dimulai dengan U+FEFF, dan pemberitahuan mengatakan bahwa tanda itu dipertahankan, sehingga menulis teks itu lagi memberi bita yang sama, termasuk tandanya. Heksadesimal yang diawali tanda dari urutan UTF-16 yang lain, atau tanda UTF-16 selagi UTF-8 terpilih, mendapat pemberitahuan bahwa bitanya diawali tanda milik satuan lain, di samping tombol untuk beralih ke urutan yang disebut tanda itu. Di mana pun sesudah awal, U+FEFF adalah karakter biasa dan tidak memunculkan pemberitahuan.
Bita yang bukan teks, ditampilkan sebagai U+FFFD
Tidak setiap deretan bita adalah teks dalam satuan terpilih: karakter yang kehilangan bita terakhirnya, bita lepas seperti E9, yang ditulis halaman kode lama untuk é, dan bita ganjil yang tersisa di ujung UTF-16 semuanya tidak mengeja apa pun. Namun satu deretan yang buruk tidak menggagalkan seluruh tempelan: masing-masing ditukar dengan U+FFFD, karakter pengganti, dan semua yang lain terbaca seperti biasa.
Pemberitahuan lalu memberi jumlahnya dan menyebut yang pertama menurut tempatnya di antara bita, menurut digit yang Anda tulis untuknya, dan menurut baris serta kolomnya. Café yang disimpan dalam Windows-1252, halaman kode Windows untuk teks Eropa Barat, adalah 43 61 66 E9, dengan é sebagai satu bita E9 di sana; dibaca sebagai UTF-8, kata itu kembali sebagai Caf dan U+FFFD, dan pemberitahuannya menyebut bita ke-4, yang ditulis E9, di baris 1, kolom 10. Dalam UTF-8, kata itu adalah 43 61 66 C3 A9.
Pemberitahuan itu menghitung deretan, bukan bita: F0 9F 98, tiga dari empat bita 😀, adalah satu U+FFFD. Dan U+FFFD yang memang ada dalam teks, yaitu bita EF BF BD, dibaca sebagai teks dan sama sekali tidak dihitung, jadi pemberitahuan itu selalu hanya tentang bita yang tidak terbaca.
Mengubah heksadesimal kembali menjadi berkas
Pembacaan menyerahkan bita selain teksnya. Dengan arah pada “Heksadesimal ke teks” dan UTF-8, UTF-16 LE, atau UTF-16 BE terpilih, “Unduh” menyimpan, sebagai berkas bernama bytes.bin, persis bita yang telah dibaca, termasuk yang bukan teks dan sebelum ada yang diganti: pekerjaan yang dilakukan xxd -r terhadap dump heksadesimal. Tidak ada “Unduh” untuk titik kode, yang bukan bita, dan tidak pula saat menulis, ketika yang Anda bawa pulang adalah digit.
Jadi heksadesimal dari sesuatu yang tidak pernah berupa teks tetap kembali utuh. Setiap gambar PNG dimulai dengan delapan bita 89 50 4E 47 0D 0A 1A 0A; dibaca sebagai UTF-8, kedelapan bita itu tampil sebagai U+FFFD, huruf-huruf PNG, dan empat karakter kontrol, dengan pemberitahuan tentang satu deretan yang bukan teks, dan “Unduh” menyimpan kedelapannya persis. Berkas itu selalu bernama bytes.bin, karena bita tidak membawa nama, jadi berilah namanya sendiri, seperti image.png, setelah berkas itu tersimpan.
Ke mana pergi untuk karakter, bitnya, atau bilangan
Untuk mengetahui jati diri karakter — namanya, kategorinya, dan apakah ia salah satu karakter yang tak terlihat — Inspektur karakter Unicode menguraikan teks titik kode demi titik kode dan juga menampilkan bita UTF-8 masing-masing.
Konverter teks ke biner adalah halaman yang sama ini, terbuka pada biner, tempat pola yang diikuti UTF-8 dapat dibaca di bit-bit pertama setiap bita. Dan bilangan bukanlah teks: 255 yang dimasukkan di sini adalah digit 2, 5, dan 5, dan karena itu bita 32 35 35, sedangkan Konverter basis bilangan menerima 255 sebagai kuantitas dan menuliskannya dalam heksadesimal sebagai ff.
Pertanyaan yang sering diajukan
- Bagaimana saya mendapatkan teks dari heksadesimal?
- Pilih “Heksadesimal ke teks”, tempel heksadesimalnya, lalu setel satuan agar cocok dengan pengodean yang dipakai untuk menulisnya: UTF-8 untuk sebagian besar teks, UTF-16 LE untuk heksadesimal yang diambil dari string Windows atau .NET atau dari kolom NVARCHAR. Spasi, koma, titik dua, dan tanda hubung di antara bita, 0x atau \x di depannya, dan satu pembungkus di sekeliling seluruhnya diterima saat membaca, begitu pula huruf besar maupun kecil.
- Mengapa ada NUL di antara setiap huruf teks saya?
- Kemungkinan besar heksadesimal itu UTF-16 LE yang dibaca sebagai UTF-8. UTF-16 LE menulis setiap huruf bahasa Inggris sebagai dua bita, nilai ASCII-nya lalu 00, dan UTF-8 membaca setiap nol itu sebagai karakter tersendiri, NUL. Pilih UTF-16 LE, atau tekan tombol untuk beralih jika halaman ini menawarkannya di samping pemberitahuannya, dan huruf-hurufnya merapat.
- Mengapa huruf beraksen dalam heksadesimal saya keluar sebagai U+FFFD?
- Kemungkinan besar heksadesimal itu ditulis dalam halaman kode lama seperti Windows-1252, tempat é adalah satu bita E9, sedangkan dalam UTF-8 é adalah C3 A9 dan E9 yang berdiri sendiri bukan teks. Halaman ini membaca UTF-8 dan UTF-16 dan tidak satu pun halaman kode lama, jadi alih-alih menebak mana yang dimaksud, halaman ini menampilkan setiap deretan seperti itu sebagai U+FFFD dan mengatakan di mana yang pertama berada. “Unduh” tetap memberi Anda bitanya seperti semula.
- Bisakah saya menempel apa yang dicetak xxd atau hexdump -C?
- Bisa: tata letak hexdump -C, yang juga ditulis gaya “Dump heksadesimal”, dan apa yang dicetak xxd tanpa opsi. Kolom teks dikesampingkan dan tidak ada offset yang dibaca sebagai bita, baris * diisi kembali, dan pemberitahuan menyebut tata letak mana dari keduanya yang dibaca; offset yang tidak cocok dengan bita sebelumnya menghentikan pembacaan di barisnya, karena baris-baris itu tidak lagi sepakat satu sama lain. Heksadesimal polos dari xxd -p juga dibaca, seperti heksadesimal lain, tanpa pemberitahuan.
- Apakah penting heksadesimal ditulis dengan huruf besar atau huruf kecil?
- Tidak bagi bitanya: 4A dan 4a adalah bita yang sama, J. Halaman ini menulis huruf besar kecuali Anda memilih “huruf kecil”, dan pilihan itu berlaku untuk offset dump heksadesimal sama seperti untuk bitanya; pembacaan menerima keduanya, bahkan jika bercampur dalam satu tempelan.
- Bagaimana cara mendapatkan berkas kembali dari dump heksadesimal?
- Pilih “Heksadesimal ke teks” dan UTF-8 atau salah satu UTF-16, tempel dump atau heksadesimal polosnya, lalu tekan “Unduh”. Berkas yang disimpannya, bytes.bin, berisi persis bita yang dibaca dari apa yang Anda tempel, teks atau bukan, jadi ia mengerjakan tugas xxd -r; ganti namanya menjadi nama semula.
- Apakah aman menempel heksadesimal dari basis data produksi atau log?
- Ya, sejauh menyangkut konversinya. Konversi itu terjadi di perangkat Anda sendiri, ke arah mana pun ia berjalan: heksadesimal yang Anda tempel, teks yang dihasilkannya, dan berkas apa pun yang disimpan “Unduh” tidak pernah dikirim ke mana pun.
Alat terkait
- Konverter teks ke biner
Biner menulis satu bita sebagai delapan bitnya, dan di sanalah pola UTF-8 terbaca: é adalah C3 A9 di sini dan 11000011 10101001 di sana — bita pertamanya diawali 110 karena hurufnya memakan dua bita, dan bita keduanya diawali 10 karena melanjutkannya. Halaman ini juga menyediakan biner; halaman itu terbuka pada biner.
- Inspektur karakter Unicode
Lihat persis dari karakter apa string terbuat.
- Konverter basis bilangan
Ketik 255 di halaman ini dan Anda mendapatkan tiga bita, satu untuk setiap karakternya: 32 35 35. Halaman itu membaca 255 sebagai bilangan dan mengonversi nilainya sendiri, yang dalam heksadesimal adalah ff.
- Base64
Kodekan dan dekode Base64 — dukungan UTF-8 penuh.