Base91-koder og -dekoder

Konvertér tekst, hexbytes eller filer til basE91 og tilbage. basE91 pakker binære data i 91 printbare ASCII-tegn og giver kortere output end Base64 eller Base85.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Vælg Kod for at omdanne tekst eller bytes til basE91, eller Afkod for at omdanne basE91 tilbage til data.
  2. Skriv eller indsæt dit input, eller åbn en fil. Sæt Input som til Hex for rå bytes.
  3. Resultatet opdateres, mens du skriver. Ved afkodning vælger du Tekst eller Hex under Output som.
  4. Kopiér resultatet, eller download det som en fil.

Hvad er basE91?

basE91 er en binær-til-tekst-kodning, der er udviklet af Joachim Henke. Den bruger 91 af de 95 printbare ASCII-tegn: alle undtagen mellemrum, apostrof ', bindestreg - og omvendt skråstreg \.

Den arbejder ikke med faste blokke af bytes. Koderen samler inputbits i en buffer og tager 13 af dem ad gangen. Hvis 13-bit-værdien er større end 88, skrives den som to tegn. Hvis den er 88 eller mindre, tages der også en 14. bit med, hvilket stadig kan lade sig gøre, fordi to base-91-tegn kan udtrykke 91 × 91 = 8281 forskellige værdier. Hver gruppe på 13 eller 14 bit bliver derfor til præcis 2 tegn.

Resultatet er en overhead på højst ca. 23 % og helt ned til ca. 14 % for data med lange sekvenser af nulbytes. Tilfældige eller komprimerede data ender tæt på den øvre grænse.

basE91 sammenlignet med andre kodninger

KodningTegnOutputstørrelse
Hex162 × input
Base5858ca. 1,37 × input
Base64641,33 × input
Base85 / Ascii85851,25 × input
basE9191ca. 1,14 til 1,23 × input

Skriv dine egne data i Alle kodninger for at sammenligne de faktiske outputlængder.

Det skal du være opmærksom på

  • Escaping. Alfabetet indeholder det dobbelte anførselstegn ", som skal escapes i JSON og i de fleste strengliteraler, samt <, > og &, som skal escapes i HTML og XML. basE91 er ikke URL-sikker.
  • Afkod hele strengen. Fordi bits løber hen over grænserne mellem tegnene, kan et stykke, der er klippet ud af midten af en basE91-streng, ikke afkodes for sig selv.
  • Understøttelse. basE91 er ikke en IETF-standard. Forfatteren udgiver referenceimplementeringer i C og andre sprog, og der findes porteringer til de fleste platforme, for eksempel pakken base91 til Python.

Specifikation

Alfabet91 printbare ASCII-tegn
OutputstørrelseCa. 123 %
UdfyldningIngen
StandardbasE91 (Joachim Henke)
Skelner mellem store og små bogstaverJa

Eksempler

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

Ofte stillede spørgsmål

Er basE91 mindre end Base64?

Ja. Base64 lægger altid 33 % til, mens basE91 højst lægger ca. 23 % til og mindre for data med mange nulbytes. For en fil på 1 MB sparer du omkring 100 KB.

Hvilke tegn bruger basE91?
Bogstaverne A-Z og a-z, cifrene 0-9 og symbolerne !#$%&()*+,./:;<=>?@[]^_`{|}~". Mellemrum, apostrof, bindestreg og omvendt skråstreg bruges ikke.
Hvorfor skrives det basE91?

Sådan staver forfatteren selv navnet. basE91 og Base91 betegner den samme kodning, og denne side følger den oprindelige algoritme.

Ødelægger blanktegn afkodningen?

Nej. Mellemrum og linjeskift er ikke en del af alfabetet, så dekoderen her ignorerer dem. Du kan indsætte ombrudt basE91-tekst direkte.