Metinden Sekizliğe Dönüştürme
Metin karakterlerini C dizgilerindeki gibi sekizli bayt kodlarına çevir.
Sekizli metin kodlaması modern yazılımlarda nadiren karşımıza çıkar. Bu formatın günümüze kadar ulaştığı en belirgin alan, C ve Unix kabuklarının uzun süredir desteklediği sekizli kaçış dizileridir.
Sekizli kaçış dizileri ve bayt yapısı
C ve POSIX kabuk dizgilerinde bir kaçış karakterinin ardından gelen en fazla üç sekizli basamak, doğrudan tek bir bayt değerini temsil eder. Örneğin bu kaçış dizisinin ardına 102 yazdığında elde edilen karakter B harfidir. Bunun nedeni sekizli tabandaki 102 değerinin (1 × 64) + (0 × 8) + 2 = 66 eşitliğini vermesi ve ondalık 66 sayısının ASCII tablosunda B karakterine denk gelmesidir.
Bu sözdizimi, programcıların donanım seviyesinde sekizli tabanı yaygın olarak kullandığı 1970'lerin başındaki ilk C sürümlerine kadar uzanan köklü bir geçmişe sahiptir.
Sekizli kodların onaltılık düzene yenilmesi
Onaltılık tabandaki bir kaçış dizisi herhangi bir bayt değerini ifade etmek için 00 ile FF arasında tam olarak iki basamağa ihtiyaç duyar. Sekizli kaçış dizisi ise üç basamağa kadar uzayabilir; dahası sabit bir basamak genişliği kullanılmadığında sekizli dizi kendisinden sonra gelen bir rakamı yanlışlıkla içine çekebilir.
Onaltılık düzen bayt sınırlarıyla kusursuz biçimde örtüşür. Bu uyum nedeniyle onaltılık gösterim bayt işlemleri için standart tercih haline gelmiştir. Güncel kod standartları onaltılık veya unicode kaçış dizilerini önerirken, sekizli biçimleri yeni projelerde kaçınılması gereken eski bir yöntem olarak değerlendirir.
Metinden sekizliğe dönüştürme adımları
- Metindeki karakterleri tek tek ele al.
- Her karakterin ondalık sayı kodunu tespit et.
- Bu ondalık değeri sürekli 8 sayısına bölüp kalanları tersten okuyarak sekizli değere çevir.
- Kaçış dizisi biçiminde çıktı hazırlıyorsan elde ettiğin her sonucu gerekirse üç basamağa tamamla.
- Dönüştürmek istediğin metni alana girip butona tıkla ve sunucudan gelen sekizli kodları kopyala.
Sekizli gösterimle karşılaşabileceğin yerler
- Onaltılık kaçış dizilerinin yaygınlaşmadığı dönemlerden kalan eski C veya C++ kaynak kodları.
- Sayıları sekizli metin olarak biçimlendirmek için %o belirtecinin kullanıldığı POSIX kabuk betikleri ve bazı printf uygulamaları.
- Sekizli tabanın standart kabul edildiği dönemde yazılmış eski gömülü sistem belgeleri.
- Onaltılık düzene hiç güncellenmemiş eski Unix kılavuzları ve dosya biçimi tanımları.
Sekizli kodlama hakkında sorular
Sekizli metin kodlaması güncel dosya formatlarında kullanılır mı?
Birincil metin kodlaması olarak neredeyse hiç kullanılmaz; ancak POSIX tar arşivleri dosya boyutu gibi bazı başlık alanlarını sekizli basamak dizileri halinde saklamayı sürdürür.
Tek bir bayt için kaç sekizli basamak gerekir?
En fazla üç basamak gerekir. Üç sekizli basamak 0 ile 511 arasındaki sayıları kapsar ve bir baytın 0 ile 255 arasındaki aralığı için fazlasıyla yeterlidir; bu aralıkta ilk basamak yalnızca 0 ile 3 arasında olabilir.
Karakterin kendisini yazmak yerine neden sekizli kaçış dizisi kullanılır?
Genellikle görünür bir simgesi olmayan kontrol kodlarını belirtmek veya klavye ve dosya kodlamasıyla doğrudan girilemeyen bayt değerlerini karışıklığa yer bırakmadan aktarmak için tercih edilir.
Sekizli kaçış kuralları C ve kabuk dillerinde tamamen aynı mıdır?
Temel mantık aynıdır; fakat izin verilen basamak adedi ve dizinin nasıl sonlandırıldığı C, POSIX kabukları ve diğer diller arasında küçük farklar gösterebilir.
Yeni projelerde sekizli mi yoksa onaltılık kaçış dizisi mi tercih edilmeli?
Hemen her durumda onaltılık biçim tercih edilmelidir. Hem daha az yer kaplar hem bayt sınırlarıyla tam örtüşür hem de güncel geliştirici topluluklarının beklediği standarttır.