Sådan bruger du værktøjet
- Vælg Kod for at omdanne tekst eller bytes til Base85, eller Afkod for at omdanne Base85 tilbage til data.
- Skriv eller indsæt dit input, eller åbn en fil. Sæt Input som til Hex, hvis du arbejder med rå bytes.
- Resultatet opdateres, mens du skriver. Ved afkodning vælger du Tekst eller Hex under Output som, alt efter hvad dataene indeholder.
- Kopiér resultatet, eller download det som en fil.
Hvad er Base85?
Base85 er en familie af kodninger, der omdanner hver gruppe på 4 bytes til 5 tegn. Fem cifre i base 85 kan rumme 85 × 85 × 85 × 85 × 85 = 4.437.053.125 værdier, lige nok til et vilkårligt 32-bit-tal, så outputtet er kun 25 % større end inputtet mod 33 % for Base64.
Der findes flere Base85-alfabeter, og de kan ikke bruges i flæng: Ascii85 (Adobe, PDF), Z85 (ZeroMQ) og det, der bruges på denne side. Det består af 0-9, A-Z, a-z og 23 symboler: !#$%&()*+-;<=>?@^_`{|}~. Anførselstegn, komma, punktum, skråstreg, kolon, omvendt skråstreg og firkantede parenteser er udeladt.
RFC 1924, Git og Python
Tegnsættet stammer fra RFC 1924, "A Compact Representation of IPv6 Addresses", der blev udgivet den 1. april 1996 som en aprilsnar. Den foreslog at skrive en 128-bit IPv6-adresse som ét base-85-tal på præcis 20 tegn. Ingen skriver IPv6-adresser på den måde, men alfabetet blev senere genbrugt til binære data generelt:
- Git gemmer binære filer i patches (
git diff --binary,git format-patch) som zlib-komprimerede data kodet med dette alfabet, med et længdetegn i begyndelsen af hver linje. - Python 3.4 og nyere har
base64.b85encode()ogb85decode(), hvis output svarer til dette værktøjs. - Mercurial bruger samme kodning til binære filer i diffs i Git-stil.
Bemærk, at RFC 1924 konverterer hele den 128-bit adresse på én gang, mens Git, Python og dette værktøj arbejder i grupper på 4 bytes, så en værdi på 16 bytes giver et andet resultat end med RFC-metoden.
Korte slutgrupper
Når inputlængden ikke er et multiplum af 4, fyldes den sidste gruppe op med nulbytes og kodes, og kun de første n + 1 tegn beholdes: 1 byte bliver til 2 tegn, 2 bytes til 3 og 3 bytes til 4. Dekoderen vender processen om, så der er ikke brug for udfyldningstegn. I modsætning til z i Ascii85 har denne variant ingen genvej for nulbytes.
# Python 3.4+
import base64
base64.b85encode(b'hello') # b'Xk~0{Zv'
base64.b85decode(b'Xk~0{Zv') # b'hello'
Specifikation
| Alfabet | 0-9 A-Z a-z !#$%&()*+-;<=>?@^_`{|}~ |
|---|---|
| Outputstørrelse | 5 tegn pr. 4 bytes (125 %) |
| Udfyldning | Ingen |
| Standard | RFC 1924-tegnsæt (Git, Python b85) |
| Skelner mellem store og små bogstaver | Ja |
Eksempler
| Input (UTF-8) | Output |
|---|---|
Hello, World! | NM&qnZ!92JZ*pv8Ap |
Base64.is | LSb`dHZ(42a{ |
你好 | <h`KfrM& |
Ofte stillede spørgsmål
Er Base85 det samme som Ascii85?
z og kan være omgivet af Adobes afgrænsere. Brug siden Ascii85 til PDF- og PostScript-data.Var RFC 1924 en rigtig standard?
Nej. Det er en informativ RFC, der blev udgivet som aprilsnar, og den blev aldrig brugt til IPv6-adresser. Tegnsættet blev først populært senere gennem Git og Python.
Hvor meget større er Base85-output?
Kan jeg bruge Base85 i JSON eller XML?
<, > og & escapes. Base85 er ikke URL-sikker.