ASCII Kodlaması: Metin, Ondalık, Hex, Binary ve Oktal
ASCII, her yazdırılabilir karakteri 0 ile 127 arasında bir sayıyla eşleştirir. Bu sayıları ondalık, hex, binary ve oktal olarak anlamak, geliştiricilerin düşündüklerinden daha sık başvurduğu bir beceridir.
ASCII Nedir?
ASCII, American Standard Code for Information Interchange (Amerikan Standart Bilgi Alışveriş Kodu) anlamına gelir. 1963'te yayımlanan bu standart, 128 karakteri 0 ile 127 arasındaki tam sayılarla eşleştirir. Bu 128 karakter; İngilizce alfabeyi (büyük ve küçük harf), 0-9 rakamlarını, noktalama işaretlerini ve satır sonu, sekme, satır başı gibi 33 kontrol karakterini kapsar.
Türkçe karakterler (ğ, ş, ı, ö, ü, ç) standart ASCII aralığı olan 0-127 dışındadır. Bu yüzden Türkçe içeren eski sistemlerde karakter bozulmaları yaşanır; ASCII yalnızca İngilizce için tasarlanmıştır.
Geliştiricilerin Hâlâ ASCII'ye İhtiyaç Duymasının Nedenleri
- İkili dosyaları okumak: Bir dosyayı hex editörde açtığınızda sağ panel her byte'ın ASCII yorumunu gösterir.
0x48 0x54 0x54 0x50'nin "HTTP" yazdığını bilmek anında yön tayini sağlar. - Ağ protokollerinde hata ayıklama: Ham TCP ve HTTP trafiği ASCII metnidir. Paketi yakaladığınızda tabloyu bilmek her şeyi okunabilir kılar.
- URL kodlama: Boşluk ASCII 32'dir, hex olarak
0x20. URL'de boşluk%20olur çünkü yüzde işaretinin ardından ASCII kodunun hex değeri gelir. - Kaçış dizileri:
\nASCII 10 (satır sonu),\tASCII 9 (sekme),\rASCII 13 (satır başı). - Eski sistemler: Mainframe'ler, gömülü donanım yazılımı ve seri protokoller ASCII üzerine inşa edilmiştir.
Dört Sayı Sistemi, Tek Bir Örnekle
A harfi en temiz örnektir; değerleri tüm sistemlerde akılda kalıcıdır.
| Sistem | "A" için Değer | Açıklama |
|---|---|---|
| Ondalık | 65 | Taban 10, günlük saydığımız sistem |
| Onaltılık (Hex) | 0x41 | Taban 16; 4×16 + 1 = 65 |
| İkili (Binary) | 01000001 | Taban 2; bellekte saklanan gerçek bitler |
| Sekizli (Oktal) | 101 | Taban 8; 1×64 + 0×8 + 1 = 65 |
Küçük a ondalık 97'dir (0x61). Büyük ve küçük harf arasındaki fark tam 32, yani 0x20 — boşlukla aynı değer. Bu bir tesadüf değil, büyük/küçük harf dönüşümünü tek bir bit değişimine indirgeyen bilinçli bir tasarım tercihidir.
Pratik Örnekler
URL Kodlama
Tarayıcı bir URL kodladığında, güvensiz her karakterin ASCII değerini alır ve bunu yüzde işareti ile iki hex basamağı olarak yazar. Boşluk (ASCII 32 = 0x20) → %20. URL Encoder/Decoder ile herhangi bir URL dizesini anında kodlayabilir veya çözebilirsiniz.
Kaçış Dizileri
Backslash kaçış dizisi kullanan her dil aslında ASCII değerlerine başvuruyor:
\n— ASCII 10, satır sonu\r— ASCII 13, satır başı (Windows satır sonu:\r\n)\t— ASCII 9, yatay sekme\0— ASCII 0, null (C'de dize sonlandırıcı)\x41— Hex kaçış; ASCII 65 = "A"
İkili Dosyaları Okumak
PNG dosyaları 89 50 4E 47 baytlarıyla başlar; ortadaki 50 4E 47 "PNG" anlamına gelir. ZIP dosyaları 50 4B ile başlar: "PK" (formatı yazan Phil Katz'ın baş harfleri). Bu imzalar, dosya uzantısına güvenmeden dosya türünü tanımanızı sağlar.
Genişletilmiş ASCII ve Unicode
Standart ASCII yalnızca 128 karakter tanımlar; İngilizce için yeterlidir, başka diller için değil. "Genişletilmiş ASCII" şemaları 8. biti kullanarak 128-255 arasına Batı Avrupa dilleri ve özel semboller ekledi. Sorun: tek bir standart yoktu. IBM kod sayfası 437, Latin-1 ve Windows-1252, aynı byte aralığı için farklı karakterler kullandı. Türkçe karakterler bu çatışmaların en çok yaşandığı örnekler arasındadır.
Unicode bu sorunu, her yazı sistemindeki her karaktere benzersiz bir kod noktası atayarak çözdü. UTF-8 geriye dönük ASCII uyumludur: ilk 128 Unicode kod noktası ASCII ile aynıdır.
İlgili Araçlar
Binary veriyle çalışıyorsanız Binary to Text Converter ham binary dizelerini okunabilir metne dönüştürür. Sayı tabanları arasında toplu dönüşüm için Number Base Converter ondalık, hex, binary ve oktal arasında geçiş yapar.
Sıkça Sorulan Sorular
Boşluğun ASCII değeri nedir?
Boşluk ASCII 32 (ondalık), 0x20 (hex), 00100000 (binary). En düşük yazdırılabilir ASCII karakteridir; 32'nin altındaki her şey kontrol karakteridir.
Türkçe karakterler neden ASCII'de yok?
ASCII 0-127 yalnızca İngilizce için tasarlandı. Türkçe ğ, ş, ı, ö, ü, ç karakterleri bu aralıkta yer almaz. Bu karakterler genişletilmiş kod sayfalarında (Windows-1254, ISO 8859-9) ya da Unicode'da tanımlanır.
ASCII ve Unicode arasındaki fark nedir?
ASCII 128 karakter tanımlar; Unicode 140.000'den fazla. İlk 128 Unicode kod noktası ASCII ile birebir aynıdır, bu yüzden UTF-8 ile kodlanmış ASCII metin byte seviyesinde düz ASCII ile özdeştir.
Herhangi Bir Metni ASCII'ye Dönüştürün
Herhangi bir metin yapıştırın ve her karakter için ondalık, hex, binary ve oktal değerleri anında görün.