Base85 Encoder / Decoder
Base85 (ASCII85) ve RFC 1924 kodlaması kullanarak metni kodlayın ve çözün.
Base85 Hakkında
Base85, 85 yazdırılabilir ASCII karakteri kullanarak ikili verileri kodlar. ASCII85, PDF ve PostScript'te kullanılır. RFC 1924 farklı bir karakter seti kullanır.
Bu araç hakkında
Base85, ham verileri okunabilir ASCII metne dönüştüren bir ikili-metin kodlama sistemidir ve yalnızca metin kanalları aracılığıyla ikili bilgi iletmeye idealdir. Verileri %33 genişleten Base64'ün aksine, Base85 çok daha fazla alan açısından verimlidir ve dosya boyutuna yalnızca %25 kadar ekler—görüntüler veya belge ekleri gibi büyük yüklerle çalışırken önemli bir avantaj.
Bu encoder'ı kullanmak için, basitçe kodlama varyantını seçin (ASCII85, PDF ve PostScript'te kullanılan Adobe standardıdır; RFC 1924 ağ odaklı bir alternatiftir), ardından kodlama veya kod çözme modunu seçin. Metin veya kodlanmış verilerinizi yapıştırın, düğmeye tıklayın ve sonuç, kodlanmış sürümün ne kadar alan kullanacağını gösteren boyut karşılaştırması ile görünür.
Base85, hem verimlilik hem de metin güvenliğinin önemli olduğu özel bağlamlarda parlak bir performans gösterir: gömülü yazı tiplerini depolayan PDF dosyaları, baskı iş akışlarındaki PostScript grafikleri veya ikili verinin kompakt temsilini gerektiren ağ protokolleri. Base64 daha evrensel olarak desteklense de, çıktı boyutunu en aza indirgemek ve taşınabilirliği korumak istediğinizde Base85 standart seçimdir.
Sıkça Sorulan Sorular
Kod Uygulaması
import struct
def encode_ascii85(data: bytes) -> str:
result = []
for i in range(0, len(data), 4):
chunk = data[i:i+4]
padded = chunk.ljust(4, b'\x00')
n = struct.unpack('>I', padded)[0]
if n == 0 and len(chunk) == 4:
result.append('z')
else:
chars = []
for _ in range(5):
chars.append(chr(n % 85 + 33))
n //= 85
result.extend(reversed(chars[:len(chunk)+1]))
return '<~' + ''.join(result) + '~>'
def decode_ascii85(s: str) -> bytes:
s = s.strip()
if s.startswith('<~') and s.endswith('~>'):
s = s[2:-2]
result = bytearray()
i = 0
while i < len(s):
if s[i] == 'z':
result.extend(b'\x00' * 4); i += 1
else:
chunk = s[i:i+5]
n = sum((ord(c) - 33) * (85 ** (4 - j)) for j, c in enumerate(chunk))
result.extend(struct.pack('>I', n)[:len(chunk)-1])
i += 5
return bytes(result)
text = "Hello, World!"
encoded = encode_ascii85(text.encode())
print("Encoded:", encoded)
print("Decoded:", decode_ascii85(encoded).decode())Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.