Metinden Sekizliğe ve Sekizlikten Metne Dönüştürücü

Metninizin her baytını üç basamaklı bir sekizlik sayı olarak yazın ya da sekizlik bayt değerlerinden oluşan bir listeyi yeniden okunabilir metne dönüştürün. UTF-8 ve birçok eski karakter kümesiyle çalışır.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Metni sekizliğe dönüştürmek için "Kodla", sekizlik değerleri yeniden metne dönüştürmek için "Kodu çöz" seçeneğini seçin.
  2. Girdiyi yazın veya yapıştırın ya da baytlarını dönüştürmek için bir dosya açın.
  3. Çıktı için bir ayırıcı seçin: "Boşluk", "Yok", "Virgül" veya "Yeni satır".
  4. Sonucu kopyalayın veya dosya olarak indirin.

Sekizlik nedir?

Sekizlik (octal) ya da Base8, sayıları 0'dan 7'ye kadar olan rakamlarla yazar. Her sekizlik basamak tam olarak üç bite karşılık gelir; bu da sekizliği, 12 bitlik PDP-8 ve 36 bitlik PDP-10 gibi sözcük uzunlukları üçün katı olan ilk bilgisayarlarda popüler kılmıştır. Günümüzde esas olarak kaçış dizilerinde ve Unix dosya izinlerinde varlığını sürdürür.

Bir bayt 0 ile 255 arasında bir değer tutar; bu, sekizlikte 0 ile 377 arasına denk gelir. Bu dönüştürücü girdinin her baytını baştaki sıfırlarla birlikte tam üç sekizlik basamak olarak yazar; böylece tüm gruplar aynı genişlikte olur ve ayırıcı olmadan bile birleştirilebilir. Metin önce seçilen metin kodlamasıyla baytlara dönüştürülür: düz ASCII için karakter başına bir bayt, UTF-8'de diğer yazı sistemleri için karakter başına iki ila dört bayt.

Sekizlik kaçış dizileri

C, C++, Python, Perl ve kabuğun printf komutu, bir baytı ters eğik çizgi ve ardından en fazla üç sekizlik basamakla yazmanıza olanak tanır: \101 A harfidir, \012 ise satır besleme karakteridir.

Bu araç ters eğik çizgi içermeyen düz basamaklar üretir. Kaçışlı bir dize oluşturmak için boşlukla ayrılmış çıktıyı alın, her boşluğu bir ters eğik çizgiyle değiştirin ve ilk grubun önüne de bir tane ekleyin. Kaçış dizilerinin kodunu çözmek için tersini yapın ve ters eğik çizgileri boşluklarla değiştirin, çünkü kod çözücü yalnızca basamakları ve ayırıcıları kabul eder.

755 gibi dosya izinleri de sekizliktir, ancak bunlar metin değil sayıdır. Böyle bir sayıyı ikili veya ondalık tabana dönüştürmek için sayı tabanı dönüştürücüsünü kullanın.

Kodda sekizlik

# Python
' '.join(f'{b:03o}' for b in 'Hi'.encode())            # '110 151'
bytes(int(o, 8) for o in '110 151'.split()).decode()   # 'Hi'

# Shell
printf '\110\151\n'        # Hi yazdırır
printf 'Hi' | od -An -to1   # 110 151

Teknik özellikler

Alfabe0-7
Çıktı boyutuBayt başına 3 basamak (%300)
DolguYok
StandartKonumsal sekizlik gösterim
Büyük/küçük harf duyarlıHayır

Örnekler

Girdi (UTF-8)Çıktı
Hello, World!110 145 154 154 157 054 040 127 157 162 154 144 041
Base64.is102 141 163 145 066 064 056 151 163
你好344 275 240 345 245 275

Sıkça sorulan sorular

Neden her bayt üç sekizlik basamaktan oluşuyor?

En büyük bayt değeri olan 255, sekizlikte 377'dir; bu nedenle üç basamak her zaman yeterlidir. Küçük değerleri baştaki sıfırlarla doldurmak her grubu aynı genişlikte tutar; ayırıcısız bir dizenin yeniden baytlara bölünebilmesini sağlayan da budur.

Boşluksuz sekizlik değerlerin kodunu nasıl çözerim?

Basamakları tek bir kesintisiz dize olarak yapıştırın. Kod çözücü dizeyi üçerli gruplara böler, bu nedenle uzunluk 3'ün katı olmalıdır. Bazı değerler üçten az basamak içeriyorsa, bunun yerine onları boşluk, virgül veya satır sonlarıyla ayırın.

400 gibi bir değer neden reddediliyor?

Sekizlik 400, bir bayta sığmayan 256'ya eşittir. Geçerli bayt değerleri 0 ile 377 arasındadır ve kod çözücü bu aralığın dışındaki her grubun konumunu bildirir. 8 ve 9 rakamları ise hiç geçerli sekizlik basamak değildir.

Farklı bir karakter kümesi için sekizlik değerler alabilir miyim?

Evet. Karakter kümesini "Metin kodlaması" menüsünden seçin; örneğin Batı Avrupa karakterlerinde karakter başına bir bayt için Windows-1252 veya ISO-8859-1'i, Çince ve Japonca metinler için GBK veya Shift_JIS'i seçebilirsiniz.