UUencode Code
Kategorisierung: | Kodierungen / binärbasiert |
Siehe auch: | XXEncode, Base32, Base64, Base85, ASCII85 |
Herkunft / Verwendung: | UUencode war das erste verbreitete Programm, das es ermöglichte, Binärdateien (also z. B. Bilder oder Programme) so umzuwandeln, dass sie nur noch aus druckbaren ASCII-Zeichen bestehen. Ähnlich wie bei Base64 lassen sich so binäre Daten über nicht-binäre Kanäle, wie etwa e-mail, bei dem nur 7-bit-ASCII erlaubt ist, versenden. Das UU in UUEncode steht für "Unix to Unix", also die Übertragung von einem Unix-Computer zu einem anderen Unix-Computer. |
Beschreibung des Algorithmus
Drei Bytes (24 Bit) werden in vier mal 6 Bit (ebenfalls 24 Bit) aufgeteilt. Der 6-Bit-Wert, der maximal 26 (=64) annehmen kann, wird dann auf eines von 64 druckbaren ASCII-Zeichen abgebildet.
Der Binärcode (rot) wird in eine Bitfolge gewandelt. Jeweils 6 Bits werden auf ein Zeichen (gelb) abgebildet. Es werden jeweils 24-Bit-Blöcke kodiert. Gegebenenfalls wird mit 0-Bytes aufgefüllt, um den letzten Block zu vervollständigen. Diese Nullbytes am Ende werden beim Dekodieren dann wieder entfernt.
Um druckbare ASCII-Zeichen zu erhalten, wird auf die Werte der 6-Bit-Zahlen 32 addiert, denn bei 32 beginnt der druckbare ASCII-Satz, davor sind Steuerzeichen. Da aber ASCII 32 das Leerzeichen ist, und dieses z. B. bei der HTML-Darstellung oft zu Sschaden kommt (mehrere Leerzeichen werden durch eines ersetzt), wird statt des Leerzeichens für diesen Wert der nach links gerichtete Apostroph (`, ASCII 96) benutzt.
Beispiel
Binärfolge: | C001DE3AF8AA (Hexcode) |
Variante: | UUEncode (ohne Header/Footer) |
Kodiert: | P`'>.OBJ |
C0 01 DE 3A F8 AA <-- binär hexadezimal
110000000000000111011110001110101111100010101010 <-- binär 8 Bit gruppiert
110000000000000111011110001110101111100010101010 <-- binär 6 Bit gruppiert
48 0 7 30 14 47 34 42 <-- Gruppenwerte dezimal (0 bis 63)
80 32 39 62 46 79 66 74 <-- Verschiebung +32
P ` ' > . O B J <-- ASCII für Werte (Ausnahme: Leerzeichen -> `)