Metinden Sekizliye

Sekizlik, onaltılığın unutulmuş kuzenidir: her basamağın tam olarak 3 biti temsil ettiği taban-8 bir sayı sistemi. Unix dosya izinleri (755, 644) sekizlik yazılır ve her karakterin, tıpkı ondalık ve onaltılık kodu gibi bir sekizlik kodu vardır. Metni yapıştırın; bu dönüştürücü her bayt için sekizlik kodu döndürür; boşlukla ayrılmış sekizlik kodları yapıştırın, orijinal metni geri alın.

Metin sekizliğe nasıl dönüştürülür

  1. 1

    Metin girin

    Düz karakterler; ASCII olmayan girdi için UTF-8 kodlaması varsayılır.

  2. 2

    Her bayt bir sekizlik kod olur

    `A` = ondalık 65 = sekizlik `101`. `Z` = 90 = `132`. Bir boşluk = 32 = `40`.

  3. 3

    Kodlar boşlukla ayrılır

    Bayt kodları tek boşluklarla birleştirilir (`Hi`, `110 151` olur). Baştaki sıfırlar eklenmez.

  4. 4

    Sekizlik yapıştırarak çözün

    Sekizlik → Metin moduna geçin ve boşlukla ayrılmış sekizlik değerleri yapıştırın; 0 ile 255 arasındaki her değer bir bayta dönüşür.

Sekizlik hızlı örnekler

Karakter Ondalık Sekizlik İkili
A 65 101 1000001
a 97 141 1100001
0 48 60 0110000
boşluk 32 40 0100000
\n 10 12 0001010

Sekizlik neden hâlâ önemli

Çoğu modern sistem onaltılığı tercih eder çünkü iki onaltılık basamak temiz biçimde bir bayta eşittir. Sekizlik birkaç yerde varlığını sürdürür:

  • Unix dosya izinleri: chmod 755, sahip = 7 (rwx), grup = 5 (r-x), diğer = 5 (r-x) demektir. Her basamak üç izin bitidir.
  • C/Python kaçış dizileri: bir dize değişmez değerindeki \101, A’dır. C tamsayı değişmez değerlerinde baştaki sıfır (int x = 0755) sekizlik olarak yorumlanır, bilinen bir tuzak.
  • Gömülü ve retro sistemler: eski 12, 18 ve 36 bitlik mimariler sekizlikle güzel hizalanırdı.
  • umask değerleri: umask 022, varsayılan dosya izin maskesini 755’e ayarlar.

Dosya izni tablosu

Sekizlik basamak İzinler İkili
0 --- 000
1 --x 001
2 -w- 010
3 -wx 011
4 r-- 100
5 r-x 101
6 rw- 110
7 rwx 111

Yani chmod 644 = sahip rw-, grup r--, diğer r--, okunabilir bir metin dosyası için varsayılan.

Tuzaklar

  • C’de baştaki sıfırlar önemlidir. int a = 010; a’yı 10 değil 8 yapar. Python 3 bunu kaldırdı; bunun yerine her zaman 0o10 kullanın.
  • Sekizlik yalnızca 0-7 basamaklarını kullanır. 8 ve 9 sekizlikte geçersizdir. Onları görürseniz kaynak sekizlik değildir.
  • Unicode baytları sekizlikte büyür. Bir UTF-8 emojisi (4 bayt), üç basamaklı 4 sekizlik koda, on iki karaktere dönüşür. Onaltılıkta sekiz olurdu. Çoğu görüntüleme amacı için onaltılık kazanır.

Sık Sorulan Sorular

Çoğunlukla asla, \NNN biçimini kullanan Unix izinleri veya C-dizesi kaçışlarıyla uğraşmadığınız sürece. Onaltılık daha kompakttır ve bayt bayt okuması daha kolaydır.

Çünkü her sekizlik basamak tam olarak üç izin bitine (okuma, yazma, çalıştırma) karşılık gelir. Gösterim 1971’de AT&T Unix’e işlendi ve hiç ayrılmadı, temeldeki bit desenine zarif biçimde eşlenir.

Evet. Sekizlik → Metin moduna geçin ve boşlukla ayrılmış sekizlik değerleri (örneğin 110 151) yapıştırın. 0 ile 255 arasındaki her değer yeniden bir bayta dönüşür, böylece çok baytlı UTF-8 karakterleri kendi tekil bayt kodlarından çözülür.

Metniniz yalnızca dönüşümü gerçekleştirmek için sunucumuza gönderilir ve saklanmaz veya günlüğe kaydedilmez.

İlgili Araçlar

Araç diğer dillerde mevcuttur