Base85 Kodlayıcı ve Kod Çözücü

Metni, onaltılık baytları veya dosyaları Base85 biçimine dönüştürün ve geri çevirin. Bu sayfa, Python b85encode fonksiyonunun ürettiği ve Git ikili yamalarında kullanılan varyant olan RFC 1924 karakter kümesini kullanır.

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

Nasıl kullanılır

  1. Metni veya baytları Base85'e dönüştürmek için "Kodla", Base85'i veriye geri çevirmek için "Kodu çöz" seçeneğini seçin.
  2. Girdinizi yazın veya yapıştırın ya da bir dosya açın. Ham baytlarla çalışıyorsanız girdi biçimini "Onaltılık" olarak değiştirin.
  3. Sonuç siz yazarken güncellenir. Kod çözerken, verinin içeriğine göre "Metin" veya "Onaltılık" çıktısını seçin.
  4. Sonucu kopyalayın veya dosya olarak indirin.

Base85 nedir?

Base85, her 4 baytı 5 karaktere dönüştüren bir kodlama ailesidir. Beş adet 85 tabanlı basamak 85 × 85 × 85 × 85 × 85 = 4.437.053.125 farklı değer tutabilir; bu, herhangi bir 32 bitlik sayı için ancak yetecek kadardır. Bu nedenle çıktı girdiden yalnızca %25 daha büyüktür; Base64 kodlamasında bu oran %33'tür.

Birden fazla Base85 alfabesi vardır ve bunlar birbirinin yerine kullanılamaz: Ascii85 (Adobe, PDF), Z85 (ZeroMQ) ve bu sayfadaki alfabe. Bu alfabe 0-9, A-Z, a-z ve 23 simge kullanır: !#$%&()*+-;<=>?@^_`{|}~. Tırnak işaretleri, virgül, nokta, eğik çizgi, iki nokta, ters eğik çizgi ve köşeli parantezler dışarıda bırakılmıştır.

RFC 1924, Git ve Python

Karakter kümesi, 1 Nisan 1996'da bir 1 Nisan şakası olarak yayımlanan RFC 1924 "A Compact Representation of IPv6 Addresses" (IPv6 adreslerinin kompakt gösterimi) belgesinden gelir. Belge, 128 bitlik bir IPv6 adresinin tam olarak 20 karakterlik tek bir 85 tabanlı sayı olarak yazılmasını öneriyordu. IPv6 adreslerini kimse bu şekilde yazmıyor, ancak alfabe daha sonra genel ikili veriler için yeniden kullanıldı:

  • Git, yamalardaki ikili dosyaları (git diff --binary, git format-patch) zlib ile sıkıştırılmış ve bu alfabeyle kodlanmış veri olarak saklar; her satırın başında bir uzunluk karakteri bulunur.
  • Python 3.4 ve sonraki sürümler, çıktısı bu araçla aynı olan base64.b85encode() ve b85decode() fonksiyonlarını sunar.
  • Mercurial, Git tarzı diff'lerdeki ikili dosyalar için aynı kodlamayı kullanır.

RFC 1924'ün 128 bitlik adresin tamamını tek seferde dönüştürdüğünü, Git, Python ve bu aracın ise 4 baytlık gruplarla çalıştığını unutmayın; bu nedenle 16 baytlık bir değer, RFC yönteminden farklı bir sonuç verir.

Kısa son gruplar

Girdi uzunluğu 4'ün katı olmadığında son grup sıfır baytlarla doldurulur, kodlanır ve yalnızca ilk n + 1 karakter tutulur: 1 bayt 2 karaktere, 2 bayt 3 karaktere, 3 bayt 4 karaktere dönüşür. Kod çözücü bu işlemi tersine çevirdiği için dolgu karakterine gerek kalmaz. Bu varyantta, Ascii85'teki z gibi sıfır baytlar için bir kısaltma yoktur.

# Python 3.4+
import base64
base64.b85encode(b'hello')      # sonuç: b'Xk~0{Zv'
base64.b85decode(b'Xk~0{Zv')    # sonuç: b'hello'

Teknik özellikler

Alfabe0-9 A-Z a-z !#$%&()*+-;<=>?@^_`{|}~
Çıktı boyutu4 bayt başına 5 karakter (%125)
DolguYok
StandartRFC 1924 karakter kümesi (Git, Python b85)
Büyük/küçük harf duyarlıEvet

Örnekler

Girdi (UTF-8)Çıktı
Hello, World!NM&qnZ!92JZ*pv8Ap
Base64.isLSb`dHZ(42a{
你好<h`KfrM&

Sıkça sorulan sorular

Base85 ile Ascii85 aynı şey mi?
Aynı aritmetiği ama farklı karakterleri kullanırlar; bu yüzden çıktıları farklıdır. Ascii85 ayrıca dört sıfır baytı z olarak kısaltır ve Adobe sınırlayıcıları arasına alınabilir. PDF ve PostScript verileri için Ascii85 sayfasını kullanın.
RFC 1924 gerçek bir standart mıydı?

Hayır. 1 Nisan şakası olarak yayımlanmış, bilgilendirme amaçlı (informational) bir RFC'dir ve IPv6 adresleri için hiç kullanılmamıştır. Karakter kümesi daha sonra Git ve Python sayesinde yaygınlaştı.

Base85 çıktısı ne kadar büyüktür?
Her 4 bayt 5 karaktere dönüşür; bu nedenle çıktı girdinin 1,25 katıdır. Base64'te bu oran yaklaşık 1,33'tür. basE91 ise biraz daha kompakttır.
Base85'i JSON veya XML içinde kullanabilir miyim?
JSON'da evet: alfabede çift tırnak veya ters eğik çizgi bulunmadığından hiçbir karaktere kaçış uygulanması gerekmez. XML ve HTML'de <, > ve & karakterlerine kaçış uygulanmalıdır. Base85 URL güvenli değildir.