

Many programs perform this conversion to allow for data-transport, such as PGP and GNU Privacy Guard (GPG). This process is referred to as binary to text encoding. Upon safe arrival at its destination, it is then decoded back to its eight-bit form. To accomplish this, the data is encoded in some way, such that eight-bit data is encoded into seven-bit ASCII characters (generally using only alphanumeric and punctuation characters-the ASCII printable characters). It is often desirable, however, to be able to send non-textual data through text-based systems, such as when one might attach an image file to an e-mail message.

For example, if the value of the eighth bit is not preserved, the program might interpret a byte value above 127 as a flag telling it to perform some function. Many computer programs came to rely on this distinction between seven-bit text and eight-bit binary data, and would not function properly if non-ASCII characters appeared in data that was expected to include only ASCII text. Files that contain machine-executable code and non-textual data typically contain all 256 possible eight-bit byte values. In contrast, most computers store data in memory organized in eight-bit bytes. Systems based on ASCII use seven bits to represent these values digitally.

For example, the capital letter A is ASCII character 65, the numeral 2 is ASCII 50, the character } is ASCII 125, and the metacharacter carriage return is ASCII 13. The ASCII text-encoding standard uses 128 unique values (0–127) to represent the alphabetic, numeric, and punctuation characters commonly used in English, plus a selection of control codes which do not represent printable characters.
