48 65 6C 6C 6F metin olarak nedir?
Hello ASCII ve UTF-8'de 48 H, 65 e, 6C l ve 6F o harfidir.
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.
Biçim: düz hex · 13 bayt
Hello, 世界
UTF-8 otomatik algılandı: tüm çok baytlı diziler geçerli.
Sonucun kendisi de hex; muhtemelen iki kez dönüştürülmüş. Bir tur daha şunu verir:
| 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> |
48 65 6C 6C 6F 2C 20 E4 B8 96 E7 95 8C
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.
Hello ASCII ve UTF-8'de 48 H, 65 e, 6C l ve 6F o harfidir.
UTF-8'de genellikle 3 bayt, GBK'de 2 你 karakteri UTF-8'de E4 BD A0, GBK'de C4 E3 olarak kodlanır.
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.
41 Küçük a ise 61'dir; büyük ve küçük harf arasındaki fark her zaman 20'dir.
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
[-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.
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.
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.
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.
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.
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.
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.
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.
>>> bytes.fromhex('c4e3bac3').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte >>> bytes.fromhex('c4e3bac3').decode('gbk')
'你好' 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.
'你'.charCodeAt(0).toString(16) // '4f60' — a UTF-16 code unit
Buffer.from('你', 'utf8').toString('hex') // 'e4bda0' — the UTF-8 bytes 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.
Integer.toHexString(b) // "ffffffe4" for 0xE4, "a" for 0x0A
String.format("%02x", b) // "e4", "0a" 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.
Buffer.from('486', 'hex') // <Buffer 48> — the 6 is silently dropped
Buffer.from('48zz65', 'hex') // <Buffer 48> — stops at zz if (!/^([0-9a-f]{2})*$/i.test(hex)) throw new Error('invalid hex');
Buffer.from(hex, 'hex'); 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.
00000000: 4869 20e4 bda0 e5a5 bd0d 0a Hi ........ → read naively: 00 00 00 00 48 69 20 e4 …
$ printf 'Hi 你好\r\n' | xxd -p 486920e4bda0e5a5bd0d0a
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.
41 54 2B 43 53 51 0A AT+CSQ followed by LF only
41 54 2B 43 53 51 0D 0A AT+CSQ followed by CR LF
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.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.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.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.C2–DF, üç bayt için E0–EF, dört bayt için F0–F4) ve sonraki her bayt 80–BF 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.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.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.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.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.%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.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. 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. 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. 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. 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. 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. 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. 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. 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. 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 (-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. 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. 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.
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.
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.
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 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.
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ı.