Kodare och avkodare för Crockford Base32

Konvertera text, hexbyte eller filer till Douglas Crockfords Base32 och tillbaka. Avkodaren förlåter skrivfel: den ignorerar skiftläge och bindestreck och läser O som 0 och I eller L som 1.

Körs helt i din webbläsare. Inget laddas upp.

Så använder du verktyget

  1. Välj Koda för att göra om text till Crockford Base32, eller Avkoda för att göra om den till text.
  2. Behåll varianten Crockford och se till att Utfyllnad är avstängd. Slå på Gemener för utdata med gemener.
  3. Skriv eller klistra in indatan, eller öppna en fil. Vid avkodning ignoreras bindestreck och mellanslag.
  4. Kopiera resultatet eller ladda ned det som en fil.

Vad är Crockford Base32?

Douglas Crockford utformade det här Base32-alfabetet för identifierare som människor läser, skriver in och säger högt. Det använder de tio siffrorna och 22 versaler: 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Bokstäverna I och L är utelämnade eftersom de liknar siffran 1, O eftersom den liknar 0, och U för att minska risken att råka stava till oanständiga ord.

Varje symbol bär 5 bitar, så 5 byte blir 8 tecken, precis som i Base32 enligt RFC 4648. Symbolerna står i stigande ASCII-ordning, så strängar utan utfyllnad i samma skiftläge sorteras i samma ordning som datan de kodar. Crockfords specifikation använder ingen utfyllnad, så låt alternativet Utfyllnad vara avstängt.

Förlåtande avkodning

Crockfords specifikation uppmanar avkodare att godta det som människor faktiskt skriver, och det gör det här verktyget:

  • Versaler och gemener behandlas likadant.
  • Bokstaven O läses som siffran 0, och bokstäverna I och L läses som 1.
  • Bindestreck, som kan läggas in för att göra långa koder lättare att läsa, ignoreras, liksom mellanslag och radbrytningar.

Bokstaven U är inte giltig och rapporteras tillsammans med sin position.

Byte, tal och ULID

Crockford beskriver sin kodning i termer av tal, medan det här verktyget kodar en följd av byte i grupper om 5 bitar, på samma sätt som RFC 4648, med Crockfords symboler. När antalet bitar inte är en multipel av 5 lägger talbaserade implementationer de överblivna nollbitarna först, medan det här verktyget lägger dem sist, så resultaten kan skilja sig åt.

ULID är ett vanligt exempel. Formatet använder Crockford-alfabetet men kodar sitt 128-bitarsvärde som ett tal med 26 tecken, så de 16 bytena i en ULID blir inte samma sträng här, och om du avkodar en ULID får du byte som är förskjutna två bitar. Den valfria kontrollsymbolen i Crockfords specifikation, ett extra tecken för värdet modulo 37, stöds inte: verktyget varken lägger till eller kontrollerar den.

Specifikation

Alfabet0-9 A-Z utom I L O U
Utdatastorlek8 tecken per 5 byte (160 %)
UtfyllnadIngen
StandardCrockford Base32 (2002)
SkiftlägeskänsligNej

Exempel

Indata (UTF-8)Utdata
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Vanliga frågor

Är Crockford Base32 skiftlägeskänslig?

Nej. Utdatan skrivs som standard med versaler, och alternativet Gemener byter till gemener. Avkodaren accepterar båda, även blandat i samma sträng.

Varför saknas I, L, O och U i alfabetet?

I och L förväxlas lätt med 1, och O med 0, så de är utelämnade och läses som dessa siffror vid avkodning. U är uteslutet för att slumpmässiga koder ska vara mindre benägna att bilda stötande engelska ord.

Stöder verktyget Crockfords kontrollsymbol?
Nej. Specifikationen tillåter ett valfritt extra tecken med en kontrollsumma modulo 37, som använder de extra symbolerna * ~ $ = U. Verktyget varken lägger till eller kontrollerar den, så ta bort en eventuell kontrollsymbol före avkodning.
Kan jag avkoda en ULID här?

Inte till dess exakta 16 byte. ULID kodar sina 128 bitar som ett enda tal med de överblivna bitarna först, medan det här verktyget arbetar med bytegrupper och lägger dem sist. Använd ett ULID-bibliotek för att läsa ut tidsstämpeln och den slumpmässiga delen.