Nasıl kullanılır
- 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.
- 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.
- Sonuç siz yazarken güncellenir. Kod çözerken, verinin içeriğine göre "Metin" veya "Onaltılık" çıktısını seçin.
- 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()veb85decode()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
| Alfabe | 0-9 A-Z a-z !#$%&()*+-;<=>?@^_`{|}~ |
|---|---|
| Çıktı boyutu | 4 bayt başına 5 karakter (%125) |
| Dolgu | Yok |
| Standart | RFC 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.is | LSb`dHZ(42a{ |
你好 | <h`KfrM& |
Sıkça sorulan sorular
Base85 ile Ascii85 aynı şey mi?
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?
Base85'i JSON veya XML içinde kullanabilir miyim?
<, > ve & karakterlerine kaçış uygulanmalıdır. Base85 URL güvenli değildir.