Source : Free On-Line Dictionary of Computing
btoa
/B too A/ A {binary}
to {ASCII} conversion utility.
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 is primarily used to transfer {binary files} between
systems across connections which are not {eight-bit clean},
e.g. {electronic mail}.
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.
btoa provides some integrity checking in the form of a line
{checksum}, and facilities for patching corrupted downloads.
The {algorithm} used by btoa is more efficient than uuencode
or base 64. ASCII files are encoded to about 120% the size of
their binary sources. This compares with 135% for uuencode or
base 64.
{C source (ftp://hpux.csc.liv.ac.uk/hpux/Misc/btoa-5.2/)}.
(version 5.2 - ~1994).
Pre-compiled {MS-DOS} versions are also available.
(1997-08-08)