En koding er bare nyttig hvis begge ender er enige om det. Den minste representasjonen er ikke nødvendigvis det beste valget når mottakeren trenger et kjent alfabet, nyttelasten må skrives av en person, eller den omkringliggende syntaksen behandler visse tegn spesielt. Begynn med mottaksprotokollen.
Hex er detaljert, men lett å inspisere
Heksadesimal skriver hver byte som to sifre. Bytesekvensen FF 00 41 blir ff0041. Hvert par har en synlig bytegrense, noe som hjelper når du inspiserer filsignaturer, kontrollsummer og protokollpakker. Den dobler tegnantallet, men det lille alfabetet passer vanligvis lett inn i logger og feilsøkingsverktøy.
Base64 balanserer størrelse og interoperabilitet
Base64 representerer tre byte med fire tegn. Det er en vanlig tilpasning for binære felt i tekstbaserte formater. Standard Base64 inkluderer pluss og skråstrek; Base64URL erstatter disse tegnene når en protokoll trenger et annet alfabet. Regler for polstring og mellomrom må fortsatt avtales. Ingen av skjemaene forteller mottakeren om de dekodede bytene er tekst, et bilde eller komprimert innhold.
Prosentkoding tilhører URL-komponenter
Prosentkoding skriver en escaped byte som %HH. Det er ikke bare en masseerstatning for Base64. Komponenten bestemmer hvilke tegn som må escapes, og tekst skal først kodes som UTF-8. En skråstrek kan skille banesegmenter mens et spørsmålstegn starter en spørring; å behandle hele URL som en ugjennomsiktig komponent endrer sin betydning.
console.log(encodeURIComponent('a+b / 中文'));
// a%2Bb%20%2F%20%E4%B8%AD%E6%96%87
Base85 trenger en eksakt variant
Mange Base85-skjemaer representerer fire byte med fem tegn, men deres alfabeter, skilletegn og spesielle tilfeller er forskjellige. ASCII85 og Z85 kan ikke antas utskiftbare. Z85 stiller også krav til blokkstørrelse. Et alfabet med høy tetthet kan inneholde tegnsetting som må escapes igjen i det omkringliggende formatet, noe som reduserer den tilsynelatende fordelen.
Ikke forveksle disse byte-kodingene med konvertering av heltall 255 mellom tallbaser. En fil kan begynne med null byte, mens en heltallsrepresentasjon kan forkaste de innledende nullene. En reversibel filkodek må definere hvordan lengde og innledende nuller bevares.
Bruk Hex for byteinspeksjon, den spesifiserte Base64-varianten for interoperabel binær transport, URL-komponentkoding for URL-er og et spesialisert opplegg bare når begge parter implementerer samme kontrakt. Sammenlign ende-til-ende-størrelse etter escape og komprimering. RFC 4648 definerer standard Base16, Base32 og Base64 familier, inkludert deres distinkte alfabeter.