Base91-encoder en -decoder

Zet tekst, hex-bytes of bestanden om naar basE91 en terug. basE91 verpakt binaire gegevens in 91 afdrukbare ASCII-tekens en levert kortere uitvoer op dan Base64 of Base85.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Kies Coderen om tekst of bytes naar basE91 om te zetten, of Decoderen om basE91 terug te zetten naar gegevens.
  2. Typ of plak je invoer, of gebruik Bestand openen. Zet Invoer als op Hex voor ruwe bytes.
  3. Het resultaat wordt bijgewerkt terwijl je typt. Zet bij het decoderen Uitvoer als op Tekst of Hex.
  4. Kopieer het resultaat met Kopiëren of sla het met Downloaden op als bestand.

Wat is basE91?

basE91 is een binair-naar-tekstcodering die is ontworpen door Joachim Henke. Ze gebruikt 91 van de 95 afdrukbare ASCII-tekens: alles behalve de spatie, de apostrof ', het koppelteken - en de backslash \.

De codering werkt niet met vaste blokken bytes. De encoder verzamelt invoerbits in een buffer en neemt er telkens 13 tegelijk. Is de 13-bitswaarde groter dan 88, dan wordt die als twee tekens geschreven. Is ze 88 of kleiner, dan wordt er ook een 14e bit bij genomen. Dat past nog steeds, omdat twee tekens in grondtal 91 samen 91 × 91 = 8281 verschillende waarden kunnen uitdrukken. Elke 13 of 14 bits worden dus precies 2 tekens.

Het resultaat is hooguit ongeveer 23% extra ruimte, en tot ongeveer 14% voor gegevens met lange reeksen nulbytes. Willekeurige of gecomprimeerde gegevens komen dicht bij de bovengrens uit.

basE91 vergeleken

CoderingTekensGrootte van de uitvoer
Hex162 × invoer
Base5858ongeveer 1,37 × invoer
Base64641,33 × invoer
Base85 / Ascii85851,25 × invoer
basE9191ongeveer 1,14 tot 1,23 × invoer

Wil je de echte uitvoerlengtes voor je eigen gegevens vergelijken, typ ze dan in Alle coderingen.

Om rekening mee te houden

  • Escaping. Het alfabet bevat het dubbele aanhalingsteken ", dat in JSON en in de meeste stringliterals ge-escapet moet worden, en <, > en &, die in HTML en XML ge-escapet moeten worden. basE91 is niet URL-veilig.
  • Decodeer de hele string. Omdat bits over de grenzen van tekens heen lopen, kun je een stuk uit het midden van een basE91-string niet los decoderen.
  • Ondersteuning. basE91 is geen IETF-standaard. De auteur publiceert referentie-implementaties in C en andere talen, en voor de meeste platforms bestaan er ports, zoals het pakket base91 voor Python.

Specificatie

Alfabet91 afdrukbare ASCII-tekens
UitvoergrootteOngeveer 123%
OpvullingGeen
StandaardbasE91 (Joachim Henke)
HoofdlettergevoeligJa

Voorbeelden

Invoer (UTF-8)Uitvoer
Hello, World!>OwJh>}AQ;r@@Y?F
Base64.isxD7gXm^?t#5
你好I_5k7aPE

Veelgestelde vragen

Is basE91 kleiner dan Base64?

Ja. Base64 voegt altijd 33% toe, terwijl basE91 hooguit ongeveer 23% toevoegt, en minder bij gegevens met veel nulbytes. Voor een bestand van 1 MB scheelt dat ruwweg 100 KB.

Welke tekens gebruikt basE91?
De letters A-Z en a-z, de cijfers 0-9 en de symbolen !#$%&()*+,./:;<=>?@[]^_`{|}~". Spatie, apostrof, koppelteken en backslash worden niet gebruikt.
Waarom wordt het basE91 geschreven?

Zo spelt de auteur de naam. basE91 en Base91 zijn dezelfde codering, en deze pagina volgt het oorspronkelijke algoritme.

Verstoort witruimte het decoderen?

Nee. Spaties en regeleinden horen niet bij het alfabet, dus de decoder op deze pagina negeert ze. Je kunt afgebroken basE91-tekst direct plakken.