Ascii85, also called Base85, is a form of binary-to-text encoding developed by Paul E. Rutter for the btoa utility.
Those communication protocols may only be 7-bit safe (and within that avoid certain ASCII control codes), and may require line breaks at certain maximum intervals, and may not maintain whitespace.
Encoded data may contain characters that have special meaning in many programming languages and in some text-based protocols, such as left-angle-bracket <, backslash \, and the single and double quotes ' & ".
[2] The original btoa program always encoded full groups (padding the source as necessary), with a prefix line of "xbtoa Begin", and suffix line of "xbtoa End", followed by the original file length (in decimal and hexadecimal) and three 32-bit checksums.
[4] Adobe adopted the basic btoa encoding, but with slight changes, and gave it the name Ascii85.
In converting a binary number to base85 (85 is not a power of two) high bits do affect the low order base85 digits and conversely.
A quote from Thomas Hobbes's Leviathan: If this is initially encoded using US-ASCII, it can be reencoded in Ascii85 as follows:
One potential compatibility issue of Ascii85 is that some of the characters it uses are significant in markup languages such as XML or SGML.
To include Ascii85 data in these documents, it may be necessary to escape the quote, angle brackets, and ampersands.
This differs from the scheme used above in that he proposes a different set of 85 ASCII characters, and proposes to do all arithmetic on the 128-bit number, converting it to a single 20-digit base-85 number (internal whitespace not allowed), rather than breaking it into four 32-bit groups.
However, for SGML-based protocols, notably including XML, string escapes may still be required (to accommodate <, > and &).