Base91-koder og -dekoder

Konverter tekst, hex-byte eller filer til basE91 og tilbake. basE91 pakker binære data inn i 91 utskrivbare ASCII-tegn og gir kortere utdata enn Base64 eller Base85.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Velg Kode for å gjøre tekst eller byte om til basE91, eller Dekode for å gjøre basE91 om til data igjen.
  2. Skriv eller lim inn inndataene, eller åpne en fil. Bytt inndata til Hex for rå byte.
  3. Resultatet oppdateres mens du skriver. Ved dekoding velger du Tekst eller Hex som utdata.
  4. Kopier resultatet eller last det ned som en fil.

Hva er basE91?

basE91 er en binær-til-tekst-koding utviklet av Joachim Henke. Den bruker 91 av de 95 utskrivbare ASCII-tegnene: alle unntatt mellomrom, apostrof ', bindestrek - og omvendt skråstrek \.

Den arbeider ikke med faste blokker av byte. Koderen samler inndatabiter i en buffer og tar 13 av dem om gangen. Hvis 13-bitersverdien er større enn 88, skrives den som to tegn. Hvis den er 88 eller mindre, tas også en 14. bit med, noe som fortsatt går fordi to base-91-tegn kan uttrykke 91 × 91 = 8281 ulike verdier. Hver gruppe på 13 eller 14 bit blir dermed til nøyaktig 2 tegn.

Resultatet er en størrelsesøkning på høyst rundt 23 %, og ned mot omtrent 14 % for data med lange serier av nullbyte. Tilfeldige eller komprimerte data havner nær den øvre grensen.

Slik står basE91 seg mot andre kodinger

KodingTegnStørrelse på utdata
Hex162 × inndata
Base5858omtrent 1,37 × inndata
Base64641,33 × inndata
Base85 / Ascii85851,25 × inndata
basE9191omtrent 1,14 til 1,23 × inndata

For å sammenligne faktiske utdatalengder for dine egne data kan du skrive dem inn i Alle kodinger.

Ting å være oppmerksom på

  • Escaping. Alfabetet inneholder doble anførselstegn ", som må escapes i JSON og i de fleste strengliteraler, og <, > og &, som må escapes i HTML og XML. basE91 er ikke URL-sikker.
  • Dekod hele strengen. Fordi bitene går på tvers av tegngrensene, kan et stykke som er klippet ut fra midten av en basE91-streng, ikke dekodes alene.
  • Støtte. basE91 er ikke en IETF-standard. Forfatteren publiserer referanseimplementasjoner i C og andre språk, og det finnes porteringer for de fleste plattformer, for eksempel pakken base91 for Python.

Spesifikasjon

Alfabet91 utskrivbare ASCII-tegn
UtdatastørrelseOmtrent 123 %
UtfyllingIngen
StandardbasE91 (Joachim Henke)
Skiller store og små bokstaverJa

Eksempler

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

Ofte stilte spørsmål

Er basE91 mindre enn Base64?

Ja. Base64 legger alltid til 33 %, mens basE91 legger til høyst rundt 23 %, og mindre for data med mange nullbyte. For en fil på 1 MB sparer du dermed omtrent 100 KB.

Hvilke tegn bruker basE91?
Bokstavene A-Z og a-z, sifrene 0-9 og symbolene !#$%&()*+,./:;<=>?@[]^_`{|}~". Mellomrom, apostrof, bindestrek og omvendt skråstrek brukes ikke.
Hvorfor skrives navnet basE91?

Det er slik forfatteren staver navnet. basE91 og Base91 viser til samme koding, og denne siden følger den opprinnelige algoritmen.

Ødelegger blanktegn dekodingen?

Nei. Mellomrom og linjeskift er ikke en del av alfabetet, så dekoderen her ignorerer dem. Du kan lime inn basE91-tekst med linjebryting direkte.