btoa is a uuencode or base 64 equivalent which addresses some of the problems with the uuencode standard but not as many as the base 64 standard. It avoids problems that some hosts have with spaces (e.g. conversion of groups of spaces to tabs) by not including them in its character set, but may still have problems on non-ASCII systems (e.g. EBCDIC).
btoa takes adjacent sets of four binary octets and encodes them as five ASCII octets using ASCII characters '!' through to 'u'. Special characters are also used: 'x' marks the beginning or end of the archive; 'z' marks four consecutive zeros and 'y' (version 5.2) four consecutive spaces.
Each group of four octets is processed as a 32-bit integer. Call this 'I'. Let 'D' = 85^4. Divide I by D. Call this result 'R'. Make I = I - (R * D) to avoid overflow on the next step. Repeat, for values of D = 85^3, 85^2, 85 and 1. At each step, to convert R to the output character add decimal 33 (output octet = R + ASCII value for '!'). Five output octets are produced.
C source. (version 5.2 - ~1994).