Skip to content

Hex String Dönüştürücü: Hex'ten Metne, Metinden Hex'e

Hex'ten metne ve metinden hex'e çevirme. Hex'i her biçimde yapıştırın: boşluklu, 0x, \x, xxd ya da hexdump çıktısı, Java veya C bayt dizileri. ASCII, UTF-8, GBK ve UTF-16 otomatik algılanır. Tarayıcıda çalışır.

Takip Yok Tarayıcıda Çalışır Ücretsiz
Dönüştürme tamamen tarayıcınızda çalışır; yapıştırdığınız hiçbir şey bu cihazdan çıkmaz.
Bir örnek deneyin

Biçim: düz hex · 13 bayt

    Metin
    Hello, 世界

    UTF-8 otomatik algılandı: tüm çok baytlı diziler geçerli.

    Aynı baytlar her kodlamada

    Kodlama Okunan metin
    UTF-8 Temiz çözülüyor Hello, 世界
    GBK / GB18030 Temiz çözülüyor Hello, 涓栫晫
    UTF-16LE Çözülemeyen baytlar var 效汬Ɐ隸闧�
    UTF-16BE Çözülemeyen baytlar var 䡥汬漬⃤뢖�
    ISO-8859-1 Temiz çözülüyor Hello, ä¸<96>ç<95><8C>
    Burada aktarılan hex dökümleri, bayt dizileri ve hata mesajları xxd, Python 3.14, Node.js 26, Go 1.27 ve clang'ın gerçek çalıştırmalarından alındı; motorun çıktı biçimlerinin özgün baytlara geri okunabildiği testlerle doğrulanır. Java ve PHP davranışı resmî belgelere dayanılarak aktarılmıştır. — Go Tools Mühendislik Ekibi · Sep 16, 2026

    Go Tools kodlama araçlarını geliştiren yazılımcılar tarafından yazıldı ve incelendi. Bu sayfada aktarılan her hex değeri ve çıktı, sayfanın kendi motoru tarafından üretilir ve otomatik testlerle doğrulanır.

    Hex'ten ASCII'ye: hızlı yanıtlar

    48 65 6C 6C 6F metin olarak nedir?

    Hello ASCII ve UTF-8'de 48 H, 65 e, 6C l ve 6F o harfidir.

    Bir Çince karakter kaç bayttır?

    UTF-8'de genellikle 3 bayt, GBK'de 2 你 karakteri UTF-8'de E4 BD A0, GBK'de C4 E3 olarak kodlanır.

    0D 0A nedir?

    CR LF (\r\n) Satır başı ve ardından satır besleme; Windows, HTTP ve çoğu seri komut kümesinin kullandığı satır sonu.

    A harfi hex'te nedir?

    41 Küçük a ise 61'dir; büyük ve küçük harf arasındaki fark her zaman 20'dir.

    Hex'ten string'e dönüştürme nedir?

    Onaltılık (hex) gösterim, baytları yazmanın bir yoludur: 0 ile 255 arasındaki her bayt, 00 ile FF arasında iki basamakla yazılır. Hex'ten string'e dönüştürme bu baytları yeniden okunabilir metne çevirir ve her zaman bir karakter kodlaması seçimi gerektirir; karakter kodlaması, hangi baytın ya da bayt dizisinin hangi karakteri temsil ettiğini söyleyen tablodur.

    İngilizce metinde bu seçim pek göze çarpmaz, çünkü ASCII, UTF-8, GBK ve diğer kodlamaların çoğu 00 ile 7F arasındaki baytlarda aynıdır. Başka her metinde hemen ortaya çıkar. C4 E3 BA C3 baytları GBK'de 你好 demektir ve UTF-8'de geçersizdir; UTF-8'de 你好 ise E4 BD A0 E5 A5 BD olur. Hex bilginin yalnızca yarısıdır; diğer yarısı kodlamadır.

    String'den hex'e dönüştürme bunun tersidir: metin baytlara kodlanır, ardından her bayt iki hex basamağıyla yazılır. Geliştiriciler bunu bir seri hattan ya da bir veritabanı sütununa tam olarak ne gittiğini görmek, ikili veriyi kaynak koda yerleştirmek ve iki sistemin gerçekte ne gönderdiğini karşılaştırmak için kullanır.

    $ echo 48656c6c6f | xxd -r -p
    Hello
    
    >>> bytes.fromhex('c4e3bac3').decode('gbk')
    '你好'
    >>> bytes.fromhex('c4e3bac3').decode('utf-8')
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte

    Bu hex dönüştürücü neler yapar

    Hex'i her biçimde yapıştırın

    Boşluklu, bitişik, iki nokta üst üste ya da tireyle ayrılmış, 0x değerleri, \x kaçış dizileri, % kodlaması, C, Go ve Java dizileri, Java'nın işaretli Arrays.toString çıktısı, Python bytes sabitleri, Node.js Buffer'ları ve eksiksiz xxd, hexdump -C ve od ekranları. Sayfa neyi tanıdığını ve neyi kaldırdığını söyler.

    Kodlama, nedeniyle birlikte algılanır

    Otomatik algılama bayt sırası işaretine, geçerli UTF-8'e, UTF-16'ya, saf ASCII'ye ve son olarak GBK'ye bakar ve kararı hangi kuralın verdiğini söyler. GBK yalnızca baytlar yaygın Çince karakterler olarak okunuyorsa seçilir; böylece kısa ikili çerçeveler anlamsız Çince karakterler olarak değil, muhtemelen metin olmadığı belirtilerek raporlanır.

    Her kodlama yan yana

    Aynı baytlar UTF-8, GBK, UTF-16LE, UTF-16BE ve ISO-8859-1 olarak gösterilir ve her birinin temiz çözülüp çözülmediği işaretlenir. Metin bozuk çıktığında doğru okuma genellikle bir satır aşağıdadır.

    Görünmez baytlar görünür hâle gelir

    NUL, CR, LF, ESC ve diğer kontrol baytları ␀ ␍ ␊ ␛ olarak gösterilir; böylece protokol verisinin sonundaki bir 00 ya da eksik bir 0D hemen göze çarpar. Kopyalama yine gerçek karakterleri verir.

    Koda yapıştırmaya hazır çıktı

    Metin → Hex sekmesi boşluklu ya da bitişik hex, 0x listeleri, \x kaçış dizileri, xxd -i tarzında bir C dizisi, işaretli değerlerle bir Java byte[], repr() çıktısıyla birebir aynı bir Python bytes sabiti, bir Go []byte ya da bir xxd dökümü üretir; sayfa bunların her birini geri de okuyabilir.

    Hiçbir şey tarayıcınızdan çıkmaz

    Ayrıştırma ve çözme işlemleri JavaScript ile yerel olarak çalışır. Hiçbir şey yüklenmez, saklanmaz ya da URL'ye eklenmez; bu yüzden paket yakalama kayıtlarını ve üretim loglarını gönül rahatlığıyla yapıştırabilirsiniz.

    Kodda hex'ten string'e dönüştürme

    Python 3

    bytes.fromhex(h).decode()

    bytes.fromhex('48 65 6c 6c 6f').decode('utf-8'), 'Hello' döndürür; baytlar arasında boşluğa izin verilir, 0x önekine verilmez. Tersi s.encode('utf-8').hex(), boşluklu çıktı için ise .hex(' ') şeklindedir. GBK'deki Çince metni çözmek ya da kodlamak için 'gbk' verin.

    JavaScript (Node.js)

    Buffer.from(h, 'hex')

    Buffer.from(h, 'hex').toString('utf8') çözer, Buffer.from(s, 'utf8').toString('hex') kodlar. Geçersiz girdi hata sayılmaz: çözme ilk hatalı çiftte durur ve sondaki tek basamak atılır; bu yüzden önce doğrulayın.

    JavaScript (tarayıcı)

    TextDecoder / TextEncoder

    Çiftleri parseInt(pair, 16) ile ayrıştırıp bir Uint8Array içine koyun, ardından new TextDecoder('utf-8').decode(bytes) çağırın. TextDecoder ayrıca 'gbk', 'big5' ve 'shift_jis' okur; ancak TextEncoder yalnızca UTF-8 üretir.

    Java 17+

    HexFormat.of()

    new String(HexFormat.of().parseHex(h), StandardCharsets.UTF_8) çözer, HexFormat.of().formatHex(s.getBytes(StandardCharsets.UTF_8)) kodlar. Eski sürümlerde her baytı String.format("%02x", b) ile biçimlendirin; negatif baytlar için ffffffe4 yazdıran Integer.toHexString(b) kullanmaktan kaçının.

    Go

    encoding/hex

    hex.DecodeString(h) baytları döndürür, string(b) onları string'e çevirir; hex.EncodeToString([]byte(s)) ise geri dönüştürür. Paket katıdır: boşluklar için invalid byte: U+0020 ' ', tek uzunluk için odd length hex string hatası döndürür.

    C

    sscanf with %2hhx

    String üzerinde ikişer basamak ilerleyerek bir unsigned char arabelleğine okuyun ve sonlandırıcı '\0' ekleyin. Hex yazdırmak için unsigned char türüne dönüştürüp %02X kullanın; aksi hâlde char türünün işaretli olduğu yerlerde 0x7F üzerindeki baytlar FFFFFFE4 olarak yazdırılabilir.

    PHP

    hex2bin() / bin2hex()

    hex2bin('48656c6c6f'), Hello döndürür; bin2hex('Hello') ise 48656c6c6f döndürür. Kılavuza göre hex2bin(), tek uzunluktaki ya da geçersiz girdide bir E_WARNING ile birlikte false döndürür.

    Shell (xxd)

    xxd -r -p / xxd -p

    echo 48656c6c6f | xxd -r -p Hello yazdırır, printf 'Hello' | xxd -p ise 48656c6c6f yazdırır. Kodlarken echo yerine printf kullanın, çünkü echo sona bir satır sonu (0a) ekler.

    C# (.NET 5+)

    Convert.FromHexString()

    Encoding.UTF8.GetString(Convert.FromHexString(h)) çözer, Convert.ToHexString(Encoding.UTF8.GetBytes(s)) kodlar (büyük harflerle, ayırıcı olmadan). FromHexString boşlukları ve 0x önekini reddeder. .NET Core ve .NET 5+ GBK desteği içermez: önce Encoding.RegisterProvider(CodePagesEncodingProvider.Instance), ardından Encoding.GetEncoding(936) çağırın.

    Hex'ten metne çevirme örnekleri

    Çince karakterler içeren UTF-8 hex

    48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
    Hello, 世界

    İlk yedi bayt düz ASCII'dir: 48 65 6C 6C 6F Hello, 2C virgül, 20 ise boşluktur. E4 B8 96 ve E7 95 8C, 世 ve 界 karakterlerinin üç baytlık UTF-8 dizileridir; Çince karakterlerin çoğu UTF-8'de üç bayt tutar. Her dizi geçerli olduğu için otomatik algılama girdiyi UTF-8 olarak okur.

    Geçerli UTF-8 olmayan bir GBK sensör okuması

    CE C2 B6 C8 3A 32 35 2E 33 A1 E6
    温度:25.3℃

    Pek çok seri cihaz Çince metni GBK ile gönderir. Burada CE C2 温, B6 C8 度, 3A 32 35 2E 33 ASCII :25.3, A1 E6 ise tam genişlikli ℃ işaretidir; her Çince karakter ya da simge için iki bayt. UTF-8 olarak okunduğunda baytlar geçersizdir (CE iki baytlık bir dizi başlatır ama C2 bir devam baytı değildir), GBK olarak okunduğunda ise yaygın karakterlerdir; bu yüzden otomatik algılama GBK'yi seçer. Yalnızca UTF-8 bilen bir dönüştürücü burada değiştirme karakterleri gösterir.

    Olduğu gibi yapıştırılmış xxd çıktısı

    00000000: 4869 20e4 bda0 e5a5 bd0d 0a              Hi ........
    Hi 你好␍␊

    printf 'Hi 你好\r\n' | xxd komutunun yazdırdığı tam olarak budur. 00000000: offset'i ve sağdaki karakter sütunu çözmeden önce kaldırılır; veri olarak okunsalardı yalnızca sekiz sıfır bile başta dört NUL baytına dönüşürdü. Son iki bayt olan 0d 0a bir Windows satır sonudur ve ␍␊ olarak gösterilir.

    Log kaydından alınmış bir Java bayt dizisi

    [-28, -72, -83, -26, -106, -121]
    中文

    Arrays.toString(bytes), Java'nın işaretli baytlarını ondalık olarak yazdırır. Negatif değerler 0x80 ve üzerindeki baytlardır: -28, 256 − 28 = 228 = 0xE4 eder. E4 B8 AD E6 96 87 şeklindeki altı bayt, 中文 metninin UTF-8 kodlamasıdır.

    Seri AT komutu için metinden hex'e

    AT+CSQ\r\n
    41 54 2B 43 53 51 0D 0A

    Modemler ve çoğu UART komut kümesi, her komutun satır başı artı satır besleme ile bitmesini bekler. Bir metin kutusu Enter tuşu için yalnızca 0A üretir; bu yüzden Satır sonu olarak CR LF seçeneğini işaretleyin, satır sonu 0D 0A olur.

    İki kez hex'e kodlanmış hex

    653462646130653561356264
    e4bda0e5a5bd → 你好

    Buradaki her bayt bir ASCII hex basamağıdır (65 e, 34 4, 62 b), bu yüzden ilk çözme işlemi başka bir hex string üretir. Bu durum, bir hex string metin sanılıp yeniden dönüştürüldüğünde ortaya çıkar. Sayfa ikinci bir tur önerir ve bu tur 你好 verir. Yanlış alarmları önlemek için bunu yalnızca ilk sonuç en az 12 hex basamağıysa ve ikinci tur gerçek bir metne çözülüyorsa önerir; tarihler, zaman damgaları, CRC32 değerleri ve MD5 özetleri bunu tetiklemez.

    Hex'ten metne çevirme nasıl yapılır

    1. 1

      Hex'i yapıştırın

      Elinizdeki biçim ne olursa olsun Hex → Metin sekmesindeki kutuya yapıştırın: boşluklu, bitişik, 0x değerleri, \x kaçış dizileri, bir bayt dizisi ya da koca bir xxd ekranı. Kutunun altındaki satır, girdinin ne olarak okunduğunu söyler.

    2. 2

      Metni ve kodlamayı kontrol edin

      Metin sağda, otomatik algılanan kodlama ve bu seçimin nedeniyle birlikte görünür. Tahmin yanlışsa alttaki tablo her okumayı gösterir; doğru olanı Kodlama menüsünden seçin.

    3. 3

      Görünmez karakterlere bakın

      NUL, CR ve LF gibi kontrol baytları ␀ ␍ ␊ olarak gösterilir. Düz metin için Görünmez karakterleri göster seçeneğinin işaretini kaldırın, ardından sonucu kopyalayın.

    4. 4

      Ya da metni hex'e çevirin

      Metin → Hex sekmesinde kodlamayı ve bir çıktı biçimini seçin: boşluklu hex, 0x değerleri, C, Java, Python ya da Go dizisi veya xxd dökümü. Seri ve ağ protokolleri için CR LF seçeneğini işaretleyin.

    Hex'ten metne çevirme neden yanlış sonuç verir

    GBK baytlarını UTF-8 olarak çözmek

    Eski Windows yazılımlarından, pek çok seri cihazdan ve eski veritabanlarından gelen Çince metin GBK'dir. Onu UTF-8 olarak çözmek ya başarısız olur ya da çıktıyı değiştirme karakterleriyle doldurur. Kodlama tablosuna bakın ve anlamlı olan okumayı kullanın.

    ✗ Yanlış
    >>> bytes.fromhex('c4e3bac3').decode('utf-8')
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte
    ✓ Doğru
    >>> bytes.fromhex('c4e3bac3').decode('gbk')
    '你好'

    JavaScript'te bayt almak için charCodeAt() kullanmak

    charCodeAt() bir UTF-16 kod birimi döndürür. ASCII'de bu değer tesadüfen bayta eşittir; bu yüzden hata yalnızca diğer karakterlerde ortaya çıkar ve sonuç, hiçbir UTF-8 sisteminin gönderdiği değerle örtüşmez.

    ✗ Yanlış
    '你'.charCodeAt(0).toString(16)   // '4f60' — a UTF-16 code unit
    ✓ Doğru
    Buffer.from('你', 'utf8').toString('hex')   // 'e4bda0' — the UTF-8 bytes

    Java'da işaretli baytları Integer.toHexString ile biçimlendirmek

    Java'nın byte türü işaretlidir, dolayısıyla 0x80 ve üzerindeki baytlar negatiftir. Integer.toHexString() bir int üzerinde çalışır, negatif değerleri 32 bitlik işaretsiz hex olarak yazdırır ve baştaki sıfırları atar.

    ✗ Yanlış
    Integer.toHexString(b)        // "ffffffe4" for 0xE4, "a" for 0x0A
    ✓ Doğru
    String.format("%02x", b)      // "e4", "0a"

    Node.js'te denetlenmemiş hex için Buffer.from()'a güvenmek

    Buffer.from(hex, 'hex') hiçbir zaman hata fırlatmaz. Geçerli hex olmayan ilk çiftte durur ve sondaki tek basamağı yok sayar; bu yüzden bir yazım hatası size hata yerine daha kısa bir buffer verir.

    ✗ Yanlış
    Buffer.from('486', 'hex')      // <Buffer 48> — the 6 is silently dropped
    Buffer.from('48zz65', 'hex')   // <Buffer 48> — stops at zz
    ✓ Doğru
    if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
    Buffer.from(hex, 'hex');

    Hex dökümünü offset sütunuyla birlikte yapıştırmak

    Yalnızca boşlukları kaldıran bir dönüştürücü 00000000: offset'ini veri olarak, karakter sütununu da yapabildiği yerlerde ek hex olarak okur. Sonuç NUL baytlarıyla başlar ve oradan itibaren kayar. Düz hex için xxd -p kullanın ya da dökümü sütunların tanındığı bu sayfaya yapıştırın.

    ✗ Yanlış
    00000000: 4869 20e4 bda0 e5a5 bd0d 0a              Hi ........
    → read naively: 00 00 00 00 48 69 20 e4 …
    ✓ Doğru
    $ printf 'Hi 你好\r\n' | xxd -p
    486920e4bda0e5a5bd0d0a

    Cihaz CR LF beklerken LF göndermek

    AT modemleri ve satır tabanlı pek çok protokol her komutu satır başı artı satır besleme ile bitirir. Yalnızca 0A ile biten bir komut çoğu zaman hiçbir hata vermeden yok sayılır.

    ✗ Yanlış
    41 54 2B 43 53 51 0A      AT+CSQ followed by LF only
    ✓ Doğru
    41 54 2B 43 53 51 0D 0A   AT+CSQ followed by CR LF

    Hex string dönüştürücüye ne zaman ihtiyaç duyarsınız

    Seri port ve UART hata ayıklama
    Seri terminaller alınan veriyi hex olarak gösterir. İçindeki metni okumak ve sondaki 0D 0A ya da 00 baytlarını fark etmek için bir çerçeveyi yapıştırın; ya da ters yönde çalışıp bir cihazın kabul edeceği, CR LF satır sonlu bir komut oluşturun.
    Paket yakalama kayıtlarını okuma
    Wireshark veya tcpdump'tan kopyalanan protokol payload'ları hex'tir. Bir çerçevedeki istek satırını, JSON gövdesini ya da cihaz adını çözmek burada betik yazmaktan daha hızlıdır ve hiçbir şey makinenizden çıkmaz.
    Uygulama loglarındaki bayt dizileri
    Java bayt dizilerini loglara işaretli ondalık sayılar olarak, Python b'...' sabitleri olarak, Node.js ise <Buffer ...> olarak yazar. Metni ve verinin UTF-8 mi yoksa GBK mi olduğunu görmek için log parçasını olduğu gibi yapıştırın.
    Veritabanlarındaki hex sütunları ve BLOB'lar
    Veritabanı araçları ikili sütunları hex olarak gösterir. Gerçekte neyin saklandığını kontrol etmek için bir değeri çözün ya da veritabanında tutulanla bayt bayt karşılaştırmak için metni hex'e çevirin.
    Firmware ve C kaynak kodundaki string'ler
    Gömülü kod metni bayt dizilerinde tutar. Bir string'i yapıştırmaya hazır bir C dizisine çevirin ya da cihazın ne yazdıracağını doğrulamak için bir başlık dosyasındaki diziyi metin olarak geri okuyun.

    Hex metne nasıl karşılık gelir: ASCII, UTF-8, GBK ve UTF-16

    Bayt başına iki hex basamağı
    Bir bayt 8 bit, bir hex basamağı 4 bit tutar; bu yüzden her bayt 00 ile FF arasında tam olarak iki hex basamağıdır ve bayt sayısı her zaman basamak sayısının yarısıdır. Büyük ve küçük harf aynı anlama gelir. Ayırıcılar, önekler ve dizi sözdizimi yalnızca gösterimdir: 4865, 48 65, 0x48, 0x65 ve \x48\x65 aynı iki bayttır.
    ASCII: her kodlamanın uzlaştığı baytlar
    ASCII 00 ile 7F arasını tanımlar. Yazdırılabilir karakterler 20 (boşluk) ile 7E (~) arasındadır; geri kalanlar kontrol karakterleridir ve gerçek veride en sık 00 (NUL), 09 (sekme), 0A (satır besleme), 0D (satır başı) ve 1B (escape) görülür. UTF-8, GBK ve ISO-8859-1 bu değerleri korur; düz İngilizce metnin neredeyse her yanlış kodlamadan sağ çıkmasının nedeni budur.
    UTF-8: karakter başına bir ila dört bayt
    UTF-8, ASCII'yi tek bayt olarak, diğer her karakteri ise bir dizi olarak yazar. İlk bayt uzunluğu bildirir (iki bayt için C2DF, üç bayt için E0EF, dört bayt için F0F4) ve sonraki her bayt 80BF aralığında olmak zorundadır. Bu katı yapı sayesinde GBK ile yazılmış bir cümle neredeyse hiçbir zaman geçerli UTF-8 olmaz — 33.910 Çince cümle üzerindeki testimizde yalnızca 55'i geçerliydi — ve otomatik algılama temiz bir UTF-8 çözümüne bu yüzden güvenir. Tek bir Çince karakterde durum farklıdır: GBK karakterlerinin yaklaşık %18'i tesadüfen geçerli, iki baytlık bir UTF-8 dizisi oluşturur.
    GBK: Çince karakter başına iki bayt
    GBK, ASCII'yi tek bayt olarak korur; Çince karakterleri ve tam genişlikli noktalama işaretlerini ise iki baytla kodlar: 81 ile FE arasında bir öncü bayt ve onu izleyen, 7F hariç 40 ile FE arasında bir bayt. İkinci baytın aralığı bu kadar geniş olduğu için GBK olarak okunan kısa bir UTF-8 metin çoğu zaman hiç hata vermeden ilgisiz karakterlere çözülür: E4 BD A0 E5 A5 BD (你好), 浣犲ソ olur. Bu sayfanın önce UTF-8'i denemesinin nedeni budur. GB18030, daha nadir karakterler için dört baytlık dizilerle GBK'yi genişletir; buradaki çözücü bunları da kabul eder.
    UTF-16 ve bayt sırası
    UTF-16 karakter başına iki bayt kullanır (Temel Çok Dilli Düzlem dışındaki karakterler için dört) ve bu iki bayt iki sırada da gelebilir. UTF-16LE düşük baytı öne koyar (A, 41 00 olur), UTF-16BE ise yüksek baytı (00 41). Windows API'leri ve pek çok dosya little-endian kullanır ve FF FE bayt sırası işaretiyle başlayabilir; UTF-8 dosyaları bazen EF BB BF ile başlar. Otomatik algılama bayt sırası işaretini kaldırır ve bunu bildirir.

    Hex ile string arasında güvenilir dönüştürme

    Kodlamayı iki uçta da belirtin
    Hex tek başına hangi kodlamayla üretildiğini söylemez. Metnin baytlara dönüştürüldüğü her yerde (getBytes(), encode(), bir seri terminal ayarı, bir veritabanı bağlantısının karakter kümesi) kodlamayı açıkça ayarlayın ve hex'in yanına yazın; böylece karşı taraf tahmin etmek zorunda kalmaz.
    Karakter kodlarıyla değil, baytlarla çalışın
    JavaScript'teki charCodeAt() ya da Java'daki char değerleri gibi karakter kodu döndüren fonksiyonlar, kodlanmış baytları değil UTF-16 kod birimlerini verir. Önce string'i TextEncoder, Buffer.from() ya da getBytes(StandardCharsets.UTF_8) ile kodlayın, ardından baytları biçimlendirin.
    Her baytı her zaman iki basamağa tamamlayın
    Çıplak bir sayıdan hex'e dönüştürme çağrısı yerine %02x ya da bir eşdeğerini kullanın. Bir logda a ile 0a birbirine benzer, ama dolgusuz değerleri birleştirmek tek uzunlukta bir string üretir, daha kötüsü farklı baytlara çözülen bir string.
    Aynı log içinde ayırıcıları tutarlı tutun
    Loglar ve izleme kayıtları için boşlukla ayrılmış çiftler gibi tek bir biçim seçin ve ona bağlı kalın. Karışık biçimleri insanlar kolayca okur, betikler ise kolayca yanlış okur; özellikle bazı değerler dolgulu, bazıları dolgusuzsa.
    Bayt sayısını kontrol edin
    Bir dönüştürmeye güvenmeden önce bayt sayısını beklediğinizle karşılaştırın: protokol başlığındaki uzunluk alanı, sütun boyutu ya da dosya boyutu. Sayfa her iki yön için de bayt sayısını gösterir.

    Hex'ten metne çevirme: sıkça sorulan sorular

    Hex'ten metne çevirme nasıl yapılır?
    Hex'i Hex → Metin sekmesindeki kutuya yapıştırın; metin hemen görünür. Elle yapmak iki adım sürer. Önce hex'i çiftlere ayırın: her iki hex basamağı 00 ile FF arasında bir bayttır, yani 48656c6c6f beş bayttır: 48, 65, 6C, 6C, 6F. Ardından bu baytları bir karakter kodlamasıyla çözün. ASCII ve UTF-8'de 48 H, 65 e, 6C l ve 6F o harfidir; sonuç Hello olur. Sonuçların farklılaştığı yer ikinci adımdır: 7F üzerindeki baytlar UTF-8, GBK ve diğer kodlamalarda farklı karakterler anlamına gelir. Bu sayfanın kodlamayı algılayıp her okumayı yan yana göstermesinin nedeni de budur.
    Hex neden bozuk karakterlere dönüşüyor?
    Neredeyse her zaman baytlar yanlış kodlamayla çözüldüğü için. Klasik örnek Çince metindir: C4 E3 BA C3 GBK'de 你好 demektir ama UTF-8 olarak geçersizdir; E4 BD A0 E5 A5 BD ise UTF-8'de 你好 demektir ama GBK olarak okunduğunda 浣犲ソ karakterlerine dönüşür. Sonucun altındaki kodlama tablosuna bakın: anlamlı metin veren satır, verinin yazıldığı kodlamadır. Yalnızca bir iki karakter varsa otomatik algılama her zaman karar veremez: D2 BB hem geçerli UTF-8'dir (һ) hem de GBK'dir (一); bu yüzden sayfanın sonucun altında gösterdiği GBK satırını kontrol edin. Elenmesi gereken iki neden daha var: sonraki her baytı yarım bayt kaydıran fazla ya da eksik bir hex basamağı ve offset sütunu hâlâ üzerinde duran bir hex dökümünün yapıştırılması. Elinizdeki hex değil de zaten bozulmuş metinse (örneğin 浣犲ソ), metni bunun yerine kodlama dönüştürücüye yapıştırın.
    Seri porttan gelen veri metin olarak bozuk, hex'te ise doğru görünüyor; neden?
    Hex doğruysa baud hızı, veri bitleri ve eşlik biti ayarlarında sorun yoktur; bunlar yanlış olsaydı baytların kendisi değişirdi. Sorun baytları karakterlere dönüştüren adımdadır ve genellikle üç nedenden biridir. Veri hiç metin olmayabilir: Modbus RTU gibi ikili bir protokol ancak hex olarak anlam taşır. Kodlama uyuşmuyor olabilir: cihaz Çinceyi UTF-8 ile gönderirken seri terminal GBK gösteriyordur ya da tam tersi; bu yüzden 你好 için gelen E4 BD A0 E5 A5 BD UTF-8 baytları 浣犲ソ olarak görünür. Ya da metinde kutucuk veya satır sonu olarak görünen 00 ya da 0D 0A gibi kontrol baytları vardır. Hex'i buraya yapıştırın: kodlama tablosu UTF-8 ve GBK okumalarını yan yana gösterir, kontrol baytları da ␀ ␍ ␊ olarak görünür.
    Hex'ten ASCII'ye ve hex'ten UTF-8'e çevirme arasındaki fark nedir?
    ASCII yalnızca 00 ile 7F arasındaki baytları tanımlar: harfler, rakamlar, noktalama işaretleri ve kontrol karakterleri. UTF-8, aynı baytların tam olarak aynı karakterleri ifade edeceği şekilde tasarlanmıştır ve geri kalan her şey için 80 ve üzerindeki bayt dizilerini kullanır: aksanlı Latin harfleri için 2, Çince, Japonca ve Korece karakterlerin çoğu için 3, emojiler için 4 bayt. Bu yüzden düz İngilizce metinde hex'ten ASCII'ye ve hex'ten UTF-8'e çevirme aynı sonucu verir. Bir bayt 80 ya da daha büyük olduğu anda sonuçlar ayrışır: yalnızca ASCII bilen bir dönüştürücü bu baytları karakter olarak gösteremez, UTF-8 ise onları Unicode'un tüm aralığına çözer. 00 ile 7F arasındaki her baytın neyi ifade ettiğini ASCII tablosunda görebilirsiniz.
    Bir Çince karakter hex'te kaç bayttır?
    Kodlamaya bağlıdır. UTF-8'de Çince karakterlerin çoğu 3 bayt tutar: 你, E4 BD A0 olur. GBK ve GB2312'de 2 bayt tutarlar: 你, C4 E3 olur. UTF-16'da Temel Çok Dilli Düzlem'deki karakterler 2 bayt tutar ve bayt sırası önemlidir: 你, UTF-16LE'de 60 4F, UTF-16BE'de 4F 60 olur. Bu düzlemin dışındaki nadir karakterler UTF-8'de 4, UTF-16'da 4 (vekil çift) ve GB18030'da 4 bayt tutar. Kendi metninizin bayt sayısını görmek için Metin → Hex sekmesinde kodlamayı değiştirin.
    Python'da hex nasıl string'e çevrilir?
    bytes.fromhex() kullanın, ardından çözün: bytes.fromhex('48656c6c6f').decode('utf-8'), 'Hello' döndürür. fromhex baytlar arasındaki boşlukları kabul eder, dolayısıyla bytes.fromhex('48 65 6c 6c 6f') de çalışır; ancak 0x önekini bir ValueError ile reddeder. GBK verisini 'gbk' ile çözün: bytes.fromhex('c4e3bac3').decode('gbk'), '你好' döndürür; aynı baytları UTF-8 olarak çözmek ise UnicodeDecodeError fırlatır. Tersi '你好'.encode('utf-8').hex() şeklindedir ve 'e4bda0e5a5bd' döndürür; boşlukla ayrılmış çıktı için .hex(' ') gibi bir ayırıcı verin.
    JavaScript'te hex nasıl string'e çevrilir?
    Node.js'te Buffer.from('48656c6c6f', 'hex').toString('utf8'), 'Hello' döndürür. Hatalı girdiye dikkat edin: Node hata fırlatmaz; ilk geçersiz çiftte durur ve sondaki tek basamağı sessizce atar, yani Buffer.from('486', 'hex') tek baytlık bir buffer'dır. Tarayıcıda baytları kendiniz oluşturun ve GBK'yi de okuyabilen TextDecoder ile çözün: new TextDecoder('gbk').decode(Uint8Array.from('c4e3bac3'.match(/../g), h => parseInt(h, 16))), '你好' döndürür. Bayt almak için charCodeAt() kullanmayın: '你'.charCodeAt(0).toString(16) ifadesinin sonucu '4f60' olur; bu, UTF-8 baytları olan e4bda0 değil, bir UTF-16 kod birimidir.
    C veya C++'ta hex string nasıl string'e çevrilir?
    Her seferinde iki hex basamağını bir unsigned char arabelleğine okuyun, ardından arabelleği sonlandırın: for (size_t i = 0; i < n; i++) sscanf(hex + 2 * i, "%2hhx", &buf[i]); buf[n] = '\0'; Burada n, strlen(hex) / 2 değeridir. hex değeri 48656c6c6f2c20e4b896e7958c olduğunda buf yazdırılırsa UTF-8 kullanan bir terminalde Hello, 世界 görünür. Ters yön için her baytı printf("%02X ", (unsigned char)s[i]) ile yazdırın. Tür dönüşümü önemlidir: char türünün işaretli olduğu platformlarda 0xE4 gibi bir bayt aksi hâlde işaret genişletmesine uğrar ve FFFFFFE4 olarak yazdırılır. C++'ta her çifti s.push_back(static_cast<char>(std::stoi(hex.substr(i, 2), nullptr, 16))) ile ekleyin; aynı hex değeri Hello, 世界 sonucunu verir.
    Java'da hex nasıl string'e çevrilir ve Java neden ffffffe4 yazdırır?
    Java 17 ve sonrasında bu tek satırlık bir iştir: new String(HexFormat.of().parseHex(hex), StandardCharsets.UTF_8); GBK verisi için bunun yerine Charset.forName("GBK") kullanın. Ters yönde ise klasik sürpriz ffffffe4 çıktısıdır. Bunun nedeni şudur: Java'nın byte türü işaretlidir ve Integer.toHexString() bir int alır. 0xE4 baytı -28 olarak saklanır; int'e genişletildiğinde değer yine -28'dir ve toHexString negatif sayıları işaretsiz 32 bitlik değer olarak, yani ffffffe4 şeklinde yazdırır. Aynı metot baştaki sıfırları da atar, dolayısıyla 0x0A değeri a olarak çıkar. Negatif bir baytı işaretsiz 8 bitlik değeriyle biçimlendiren String.format("%02x", b) ya da dolgu ekleyerek Integer.toHexString(b & 0xff) kullanın. Java 17 ve sonrasında HexFormat.of().formatHex(bytes) bütün bir diziyi dönüştürür, HexFormat.of().parseHex(hex) ise geri çevirir.
    PHP'de hex'i string'e hangi fonksiyon çevirir?
    hex2bin() bir hex string'i ikili bir string'e çözer, bin2hex() ise tersini yapar: bin2hex('Hello'), 48656c6c6f döndürür. PHP kılavuzuna göre hex2bin(), girdinin uzunluğu tek sayıysa ya da girdi geçerli bir onaltılık değer değilse false döndürür ve bir E_WARNING üretir; bu yüzden çağırmadan önce boşlukları ve 0x öneklerini temizleyin. PHP string'leri bayttan ibarettir, dolayısıyla sonuç, özgün metin hangi kodlamayı kullandıysa o kodlamadadır; sayfanız UTF-8 ise GBK çıktısını mb_convert_encoding() ile dönüştürün.
    xxd veya hexdump çıktısını doğrudan yapıştırabilir miyim?
    Evet. Offset sütunu ve karakter sütunu tanınıp kaldırılır, giriş kutusunun altındaki satır da bunun yapıldığını söyler. Bu önemlidir, çünkü yalnızca boşlukları temizleyen bir dönüştürücü offset'leri veri olarak okur. Sayfa xxd (-u, -c ve -g dahil), hexdump -C, Go'daki hex.Dump, od -A x -t x1 ve GNU od -t x1z çıktılarını işler; hexdump ve od tarafından tekrarlanan satırların yerine yazdırılan * satırını da açar. Bayt yerine 16 bitlik sözcükler yazdıran düz hexdump ve od -x çıktılarını da işler: little-endian bir makinede 48 69 baytları 6948 olarak yazdırılır; bu yüzden sayfa her çifti geri çevirir ve tek uzunluktaki veriye eklenen dolgu baytını son offset'e bakarak atar. Her xxd, hexdump ve od çeşidi, rastgele veriden alınmış 600 gerçek döküm üzerinde test edildi.
    Tek sayıda hex basamağı ne anlama gelir?
    Bir şeyin kaybolduğu ya da eklendiği anlamına gelir, çünkü her bayt tam olarak iki hex basamağıdır. Yaygın nedenler şunlardır: sayıyı hex'e çeviren bir fonksiyonun attığı baştaki sıfır (0a yerine a), kopyalarken kesilen bir karakter ya da 0 yerine yazılmış O gibi araya karışmış bir harf. Tüm baytları tek bir büyük sayı olarak dönüştürerek üretilen bir hex string, örneğin Python'daki hex(int.from_bytes(data, 'big')), baştaki sıfırı kaybeder: \r\n, 0xd0a olarak çıkar. Sayfa hangi basamağın eksik olduğunu tahmin etmez, çünkü yanlış bir tahmin ondan sonraki her baytı yarım bayt kaydırır ve inandırıcı görünen anlamsız bir sonuç üretir. Bunun yerine tek tıkla uygulanabilen iki düzeltme sunar — başa bir 0 eklemek ya da son basamağı kaldırmak — böylece sonuçları karşılaştırabilirsiniz. 0x0 0xa gibi önekle tek tek yazılmış değerler sorun değildir: her biri tam bir bayt olarak okunur.
    Yapıştırdığım veriler bir yere yükleniyor mu?
    Hayır. Dönüştürme tarayıcınızda JavaScript ile çalışır: hiçbir şey bir sunucuya gönderilmez, saklanmaz ya da sayfa URL'sine eklenmez. Bunu tarayıcınızın geliştirici araçlarındaki Network panelinden doğrulayabilirsiniz. Bu konu burada özellikle önemlidir, çünkü bir dönüştürücüye yapıştırılan hex çoğu zaman bir paket yakalama kaydı, bir firmware dökümü ya da üretim ortamındaki bir log satırıdır.

    ASCII Tablosu ve Dönüştürücü

    Kodlama ve Biçimlendirme

    Tam ASCII tablosu: 128 karakterin ondalık, onaltılık, sekizlik ve ikilik karşılıkları, artı çift yönlü metin–ASCII dönüştürücü. Kontrol karakterleri kaçış dizileri, şapka gösterimi ve nerede karşınıza çıktıklarıyla birlikte.

    Base64 Çözücü ve Kodlayıcı

    Kodlama ve Biçimlendirme

    Base64'ü ücretsiz çevrimiçi kodlayın ve çözün. Tam UTF-8 ve emoji desteğiyle gerçek zamanlı dönüştürme. %100 tarayıcıda — kayıt gerekmez.

    Base64'ü Görsele Çevirme Aracı

    Kodlama ve Biçimlendirme

    Bir Base64 dizesini ya da data URI'yi tarayıcınızda görsele geri çözün. Önizleyin, boyutları ve MIME'ı okuyun, ardından PNG, JPG, GIF, SVG olarak indirin. Yükleme yok.

    CSV'den JSON'a Dönüştürücü

    Kodlama ve Biçimlendirme

    CSV'yi tarayıcınızda JSON'a dönüştürün. RFC 4180, tür çıkarımı, başlık satırı, büyük tam sayı güvenli. %100 gizli, yükleme yok.

    Kodlama Dönüştürücü ve Bozuk Karakter Düzeltici

    Kodlama ve Biçimlendirme

    Bozuk karakterleri yapıştırın, özgün metni geri alın. UTF-8, GBK, Big5, Shift_JIS, EUC-KR ve Windows-1252 arasındaki her makul kodlama zinciri denenir, sıralanır ve zincir açıkça gösterilir. Ücretsiz, tarayıcınızda çalışır.

    .env'den JSON'a Dönüştürücü

    Kodlama ve Biçimlendirme

    Bir .env dosyası yapıştırın, anında JSON alın. Sırlarınız tarayıcınızdan asla çıkmaz — %100 gizli, yükleme yok, ücretsiz dotenv ayrıştırıcı.