En kodning är endast användbar om båda ändarna är överens om det. Den minsta representationen är inte nödvändigtvis det bästa valet när mottagaren behöver ett bekant alfabet, nyttolasten måste skrivas av en person, eller om den omgivande syntaxen behandlar vissa tecken speciellt. Börja med mottagningsprotokollet.
Hex är utförligt men lätt att inspektera
Hexadecimal skriver varje byte som två siffror. Bytesekvensen FF 00 41 blir ff0041. Varje par har en synlig bytegräns, vilket hjälper till vid inspektion av filsignaturer, kontrollsummor och protokollpaket. Den fördubblar antalet tecken, men dess lilla alfabet passar vanligtvis lätt i loggar och felsökningsverktyg.
Base64 balanserar storlek och interoperabilitet
Base64 representerar tre byte med fyra tecken. Det är en vanlig passform för binära fält i textbaserade format. Standard Base64 inkluderar plus och snedstreck; Base64URL ersätter dessa tecken när ett protokoll behöver ett annat alfabet. Regler för utfyllnad och blanksteg måste fortfarande överenskommas. Ingendera formen berättar för mottagaren om de avkodade byten är text, en bild eller komprimerat innehåll.
Procentkodning tillhör URL komponenter
Procentkodning skriver en escaped byte som %HH. Det är inte bara en bulk ersättning för Base64. Komponenten bestämmer vilka tecken som måste escapes, och text ska först kodas som UTF-8. Ett snedstreck kan separera vägsegment medan ett frågetecken startar en fråga; att behandla hela URL som en ogenomskinlig komponent ändrar dess betydelse.
console.log(encodeURIComponent('a+b / 中文'));
// a%2Bb%20%2F%20%E4%B8%AD%E6%96%87
Base85 behöver en exakt variant
Många Base85-scheman representerar fyra byte med fem tecken, men deras alfabet, avgränsare och specialfall skiljer sig åt. ASCII85 och Z85 kan inte antas vara utbytbara. Z85 ställer också krav på blockstorlek. Ett alfabet med hög densitet kan innehålla skiljetecken som måste escapes igen i det omgivande formatet, vilket minskar den uppenbara fördelen.
Blanda inte ihop dessa byte-kodningar med att konvertera heltal 255 mellan talbaser. En fil kan börja med noll byte, medan en heltalsrepresentation kan förkasta de inledande nollorna. En reversibel filcodec måste definiera hur längd och inledande nollor bevaras.
Använd Hex för byteinspektion, den specificerade varianten Base64 för interoperabel binär transport, URL komponentkodning för URL:er och ett specialiserat schema endast när båda parter implementerar samma kontrakt. Jämför änd-till-ände storlek efter flykt och komprimering. RFC 4648 definierar standardfamiljerna Base16, Base32 och Base64, inklusive deras distinkta alfabet.