Uuencode
Uuencode is a form of ASCII armor that originated as a Unix program for encoding binary data for transmission over the uucp mail system. Since uucp converted characters between various computer's character sets, uuencode was used to convert the data to fairly common characters that were unlikely to be "translated" and thereby destroy the file. The program uudecode reverses the effect of uuencode, recreating the original binary file exactly. uuencode/decode became popular for sending binary files by e-mail and posting to usenet newsgroups etc.
Uuencoded data starts with a line of the form:
begin <mode> <file>
Where <mode> is the file's read/write/execute permissions as three octal digits, and <file> is the name to be used when recreating the binary data.
Uuencode repeatedly takes in a group of three bytes, adding trailing zeros if there are less than three bytes left. These 24 bits are split into four groups of six which are treated as numbers between 0 and 63. Decimal 32 is added to each number and they are ouput as ASCII characters which will lie in the range 32 (space) to 32+63 = 95 (underscore). ASCII characters greater than 95 may also be used; however, only the six right-most bits are relevant. Each group of sixty output characters (corresponding to 45 input bytes) is output as a separate line preceded by an 'M' (ASCII code 77 = 32+45). At the end of the input, if there are N output characters left after the last group of sixty and N>0 then they will be preceded by the character whose code is 32+N. Finally, a line containing just a single space is output, followed by one containing just "end".
Sometimes each data line has an extra dummy character added to avoid problems with mailers that strip trailing spaces. These characters are ignored by uudecode.
Despite using this limited range of characters, there are still some problems encountered when uuencoded data passes through certain old computers. The worst offenders are computers using non-ASCII character sets such as EBCDIC.
See also
References
This article was originally based on material from the Free On-line Dictionary of Computing, which is used under the GFDL.
de:UUencode