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. The name "uuencode" is derived from "Unix-to-Unix encoding". 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.

The encoding process

Uuencoded data starts with a line of the form:
  begin    
Where is the file's read/write/execute permissions as three octal digits, and 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 encoded character giving the number of encoded bytes on that line. For all line except the last, this will be the character 'M' (ASCII code 77 = 32+45). If the input is not evenly divisble by 45, the last line of will contain the remaining N output characters, preceded by the character whose code is 32+N. Finally, a line containing just a single space (or grave character) is output, followed by one line containing the string "end". Sometimes each data line has extra dummy characters (often the grave accent) added to avoid problems with mailers that strip trailing spaces. These characters are ignored by uudecode. The grave accent (ASCII 96) can also be used in place of a space character. When stripped of their high bits they both decode to 000000. 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.

Sample uuencode

The diagram shows the uuencoding of the three ASCII encoded characters Cat into its uuencoded rerpesentation 0V%T. The uuencoding process If the complete uuencoded output of the three ASCII characters Cat might appear as the following
  begin 644 cat.txt  #0V%T  `  end 

Uuencode table

The following table represents the subset of ASCII characters used by UUEncode and the 6-bit binary string they represent.
rintable
Representation
ASCII Decimal Binary
Representation
!Printable
Representation !ASCII Decimal !Binary
Representation
lign="center"|(␠) align="center"|32 align="center"|000 000   align="center"|@ align="center"|64 align="center"|100 000
lign="center" |align="center"|33 |align="center"|000 001 |  |align="center"|A |align="center"|65 |align="center"|100 001
lign="center"|" align="center"|34 align="center"|000 010   align="center"|B align="center"|66 align="center"|100 010
lign="center"|# align="center"|35 align="center"|000 011   align="center"|C align="center"|67 align="center"|100 011
lign="center"|$ align="center"|36 align="center"|000 100   align="center"|D align="center"|68 align="center"|100 100
lign="center"|% align="center"|37 align="center"|000 101   align="center"|E align="center"|69 align="center"|100 101
lign="center"|& align="center"|38 align="center"|000 110   align="center"|F align="center"|70 align="center"|100 110
lign="center"|' align="center"|39 align="center"|000 111   align="center"|G align="center"|71 align="center"|100 111
lign="center"|( align="center"|40 align="center"|001 000   align="center"|H align="center"|72 align="center"|101 000
lign="center"|) align="center"|41 align="center"|001 001   align="center"|I align="center"|73 align="center"|101 001
lign="center"|* align="center"|42 align="center"|001 010   align="center"|J align="center"|74 align="center"|101 010
lign="center"|+ align="center"|43 align="center"|001 011   align="center"|K align="center"|75 align="center"|101 011
lign="center"|, align="center"|44 align="center"|001 100   align="center"|L align="center"|76 align="center"|101 100
lign="center"|- align="center"|45 align="center"|001 101   align="center"|M align="center"|77 align="center"|101 101
lign="center"|. align="center"|46 align="center"|001 110   align="center"|N align="center"|78 align="center"|101 110
lign="center"|/ align="center"|47 align="center"|001 111   align="center"|O align="center"|79 align="center"|101 111
lign="center"|0 align="center"|48 align="center"|010 000   align="center"|P align="center"|80 align="center"|110 000
lign="center"|1 align="center"|49 align="center"|010 001   align="center"|Q align="center"|81 align="center"|110 001
lign="center"|2 align="center"|50 align="center"|010 010   align="center"|R align="center"|82 align="center"|110 010
lign="center"|3 align="center"|51 align="center"|010 011   align="center"|S align="center"|83 align="center"|110 011
lign="center"|4 align="center"|52 align="center"|010 100   align="center"|T align="center"|84 align="center"|110 100
lign="center"|5 align="center"|53 align="center"|010 101   align="center"|U align="center"|85 align="center"|110 101
lign="center"|6 align="center"|54 align="center"|010 110   align="center"|V align="center"|86 align="center"|110 110
lign="center"|7 align="center"|55 align="center"|010 111   align="center"|W align="center"|87 align="center"|110 111
lign="center"|8 align="center"|56 align="center"|011 000   align="center"|X align="center"|88 align="center"|111 000
lign="center"|9 align="center"|57 align="center"|011 001   align="center"|Y align="center"|89 align="center"|111 001
lign="center"|: align="center"|58 align="center"|011 010   align="center"|Z align="center"|90 align="center"|111 010
lign="center"|; align="center"|59 align="center"|011 011   align="center"| align="center"|111" title="|align="center"|91 align="center"|111">011
lign="center"|< align="center"|60 align="center"|011 100   align="center"|\ align="center"|92 align="center"|111 100
lign="center"|= align="center"|61 align="center"|011 101   align="center"| align="center"|93 align="center"|111 101
lign="center"|> align="center"|62 align="center"|011 110   align="center"|^ align="center"|94 align="center"|111 110
lign="center"|? align="center"|63 align="center"|011 111   align="center"|_ align="center"|95 align="center"|111 111
| | |  |align="center"|` |align="center"|96 |align="center"|(1) 000 000

See also

References

 

<< PreviousWord BrowserNext >>
william slim, 1st viscount slim
new york renaissance
tks
woolwich dockyard
baltimore washington metropolitan area
battle of cyzicus
loyal legion
feast of the lemures
benedict of aniane
list of feminists
jack higgins
interlisp
john kenneth macalister
james oliver huberty
wladyslaw sikorski
william marwood
national commission on terrorist attacks upon the united states
papuan languages
charles peace
national missionary baptist convention of america
british car number plates
telephone slamming
theophilus
roman abramovich
kenneth o'keefe
national baptist convention of america, inc.
controlled airspace
airspace
holy prepuce
transcaucasia
zeppole
electronuclear force
maurice saatchi, baron saatchi
charles saatchi
smith w. brookhart
wakefield, new zealand
list of places named after peace
pomarine skua
haakon v of norway
milton osborne
magnus vi of norway
dick clark (senator)
eirik ii of norway
lester b. pearson college