§

Options

Mod
Hex gruplama
0x öneki
Harf tipi
Metin kodlaması
§

Giriş

§

Çıkış

İş Bankası ödeme işlem birimleri, POS terminalleri ile ana sunucu arasındaki ISO 8583 mesajlarını onaltılık baytlarla incelemek için bu dönüştürücüyü kullanır; MTI kodu, PAN alanı ve CVV bloğu hex olarak okunurken ASCII etiketleri metin penceresinde belirir. TÜPRAŞ Izmit rafinerisinin SCADA teknisyenleri, Modbus seri çerçevelerindeki fonksiyon kodu ve CRC alanlarını hex incelemeyle analiz eder. Türk Hava Yolları bakım mühendisleri ise ARINC-429 veri yolundan çekilen aviyonik çerçeveleri hex olarak okuyarak gömülü ASCII servis etiketlerini açığa çıkarır ve filo güvenilirlik kayıtlarını doğrular.

Hex kodlaması nasıl çalışır

Bir sayfadaki her karakter, bir veya daha fazla bayt olarak saklanır. Hex kodlaması, bu baytları taban 16 ile yeniden yazar; bayt başına iki karakter kullanarak bayt akışı özel araçlar olmadan okunabilir hale gelir.

  1. Metni baytlara kodlayın. UTF-8 modu, girişi new TextEncoder().encode(text) üzerinden geçirir ve bayt değerlerinden oluşan bir Uint8Array döndürür. Latin-1 modu, eski ISO-8859-1 kod çözücülerinin gerçekleştirdiği dönüşüm olan charCodeAt(0) & 0xFF aracılığıyla her kod biriminin düşük sekiz bitini alır.
  2. Her baytı iki hex basamağı olarak gösterin. Her bayt, byte.toString(16).padStart(2, "0") aracılığıyla iki hex basamağına eşlenir. Harf tipi seçeneği, çıkış harflerinde büyük harf (A-F) veya küçük harf (a-f) seçimini belirler.
  3. Gruplama ve önek uygulayın. Gruplama, baytlar arasına ayraç ekler: tek boşluk, tire veya her dört bayta bir boşluk. 0x öneki, C dizileri ve ikili fark araçlarının beklediği kurallara uygun biçimde tüm dizeye bir kez (Yok gruplamada) veya bayt başına (Boşluk gruplamada) eklenebilir.
  4. Ters yönde çözün. Hex → Metin modu, girişten tüm boşluk, tire ve 0x öneklerini soyar; kalan karakterleri /^[0-9a-fA-F]+$/ ile doğrular; tek sayıda basamaklı dizeleri reddeder ve ardışık bayt çiftlerinden bir Uint8Array yeniden oluşturur. UTF-8 modu bu diziyi new TextDecoder("utf-8", { fatal: true }) ile çözer; Latin-1 modu her baytı String.fromCharCode(b) ile eşler.
  5. Hızlı yineleme için canlı mod. Canlı mod varsayılan olarak açıktır. Her tuş vuruşu, Dönüştür düğmesine tıklamadan yapıştırmanıza, düzenlemenize ve diğer bölmenin güncellenmesini izlemenize olanak tanıyan 150 ms gecikmeli bir yeniden dönüştürme zamanlar.

Hex dönüştürücü neden kullanılır

  • İkili protokollerde hata ayıklama. Modbus, DNP3 ve CoAP gibi tel biçimleri, başlıklarını belirli bayt konumlarına sıkıştırır. Yakalanan bir çerçeveyi hex olarak okumak her alanı bir bakışta gösterir; aynı baytları ASCII’ya çevirmek, ikili çerçevelemenin yanında gizlenen düz metin yükünü ortaya çıkarır.
  • Gömülü üretici yazılımı ile çalışma. JTAG ve SWD sondaları bellek içeriğini hex olarak raporlar. Bir bellek bölgesini ASCII’ya çevirmek, yazılımda nerede olduğunuzu çoğunlukla işaret eden gömülü dizeleri (dosya yolları, hata mesajları, satıcı imzaları) ortaya çıkarır.
  • Paket yakalamalarını okuma. Wireshark ve tcpdump, her paketi solda hex ve sağda ASCII olarak yazdıran bir bayt bölmesi sunar. Buraya bir parça yapıştırmak, hex bloğu bir hata raporundan veya sohbet günlüğünden kopyalamanıza ve baytların ne söylediğini yakalama aracına yeniden aktarmadan okumanıza olanak tanır.
  • Bayt düzeyinde farklar. İki ikili dosyayı karşılaştırmak çoğunlukla hangi baytların değiştiğini bulmaya dayanır. Her iki tarafı da tutarlı bir gruplamaya sahip hex biçimine dönüştürmek, yerleşik fark aracının değişen baytları vurgulayabileceği bir metin düzenleyicide hizalanmış bir fark oluşturur.

Yaygın uygulamalar

Hex ↔ ASCII dönüşümü, tersine mühendislik, güvenlik ve gömülü çalışmalar genelinde bir bayt akışının düz metin yükünden fazlası olduğu her yerde ortaya çıkar.

  • Tersine mühendislik: strings’e dirençli bir ikili dosyadan hex dökümü alın, yazdırılabilir ASCII olarak çözümlenen çalışmaları seçin ve bu dizeleri kullanarak ayrıştırma içinde nerede olduğunuzu sabitleyin.
  • Ağ adli analizi: Wireshark’tan tek bir paket yükünü hex olarak kopyalayın, buraya yapıştırın ve tüm yakalamayı dışa aktarmadan uygulama katmanı metnini okuyun.
  • Kripto materyal işleme: bir anahtar, IV veya HMAC etiketi çoğunlukla hex dize olarak gelir. Baytlara geri çözmek, yapılandırmaya girmeden önce uzunluğun algoritmaya uyduğunu doğrular (AES-128 için 16 bayt, AES-256 için 32).

Çalışmalı bir örnek

Metin → Hex, UTF-8, küçük harf, Her bayta boşluk gruplamayı, önek kapalı seçin. Hi yazın: çıkış 48 69 gösterir. Öneki açın ve gruplamayı Yok olarak değiştirin; aynı giriş 0x4869 olarak görüntülenir. 😀 emojiyi giriş olarak yapıştırın; UTF-8 modu f0 9f 98 80 üretir — bir kod noktası için dört bayt, bu yüzden emojiler iletim boyutunu artırır. Hex → Metin’e geçin ve 0x48-65-6C 6C 6F yapıştırın: ayrıştırıcı öneki, tireleri ve boşlukları soyarak Hello’yu yeniden oluşturur.

FAQ

Hex kodlaması nedir?

Hex kodlaması (onaltılık kodlama), bir bayt akışını taban 16 ile yazar; bayt başına iki ASCII karakteri kullanır. Her hex basamağı dört biti kapsar; bu nedenle iki basamak bir sekiz bitlik baytı kapsar. Alfabe 0-9 ardından A-F (veya a-f) ile devam eder; harf tipi yalnızca sunum tercihidir ve çözücüler her ikisini de kabul eder. Hex, protokol özelliklerinde, hata ayıklayıcı çıktısında ve kripto anahtarlarında ham baytları yazmanın standart yoludur; çünkü ikiliden iki kat daha kompakttır ve metin içindeki ham baytların yazdırılamaz karakter sorunlarını ortadan kaldırır.

Emojim neden hex’te 4 bayta dönüşüyor?

UTF-8, değişken uzunluklu bir kodlamadır. ASCII karakterler (U+0000 ila U+007F) bir bayt, Latin-1 ekleri iki bayt, çoğu diğer BMP kod noktası üç bayt alır; U+FFFF’in üzerindeki karakterler — çoğu emoji dahil — dört bayt alır. Gülen yüz 😀 U+1F600’dir ve F0 9F 98 80 olarak kodlanır. Sabit genişlikte bayt görünümüne ihtiyaç duyarsanız Latin-1’e geçin; ancak Latin-1 yalnızca ilk 256 kod noktasını kapsar, bu aralığın dışındaki herhangi bir karakter gidiş-dönüş yapamaz.

Latin-1 / ISO-8859-1 destekleniyor mu?

Evet. Metin kodlaması seçeneğini Latin-1 (ISO-8859-1) olarak değiştirin. Kodlama, eski tek baytlı eşlemeyle eşleşen her JavaScript kod biriminin düşük sekiz bitini alır (charCodeAt(0) & 0xFF). Çözme, her bayt için String.fromCharCode(byte) kullanır. Her baytın tam olarak bir karaktere karşılık geldiği eski Windows-1252 veya Unicode öncesi sistemlerin çıktısıyla çalışırken Latin-1’i kullanın.

Dönüştürme tarayıcımda mı yapılıyor?

Evet. Dönüştürücü, TextEncoder, TextDecoder ve küçük bir ayrıştırıcıyı tek bir statik sayfa olarak çalıştırır. Yükleme yok, API çağrısı yok ve yapıştırdıklarınız üzerinde analitik yok — yalnızca site genelinde paylaşılan standart sayfa yükleme metrikleri. Burada gördüğünüz hex baytları, aynı girişe karşı bir Node betiği veya Lambda fonksiyonu tarafından üretilecek baytlarla aynıdır.

Hex ↔ ASCII dönüşümü, ikili protokollerle veya gömülü üretici yazılımıyla çalışan herkesin günde birkaç kez yaptığı küçük bir iştir. Bunu tarayıcı sekmesinde, Node ve V8’in zaten kullandığı yerel kodlayıcılarla yapmak işi hızlı tutar ve bayt akışını makinenizde bırakır.