XXencode Code
Kategorisierung: | Kodierungen / binärbasiert |
Siehe auch: | UUEncode, Base32, Base64, Base85, ASCII85 |
Herkunft / Verwendung: |
XXEncode ist ein Programm, um Binärdaten (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. Prinzipiell funktioniert XXEncode wie UUEncode, doch wird zu Kodierung ein Zeichensatz verwendet, der aus den Zeichen A-Z, a-z, 0-9, + und - besteht und damit noch besser auf allen Systemen darstellbar und dadurch besser transportierbar ist. Außerdem soll durch den alternativen Zeichensatz das Risiko von ungewollt falscher Zeichenumwandlung zwischen ASCII und EBCDIC minimiert werden. |
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.
Ersetzungs-Tabelle für UUEncode:
0 + 16 E 32 U 48 k
1 - 17 F 33 V 49 l
2 0 18 G 34 W 50 m
3 1 19 H 35 X 51 n
4 2 20 I 36 Y 52 o
5 3 21 J 37 Z 53 p
6 4 22 K 38 a 54 q
7 5 23 L 39 b 55 r
8 6 24 M 40 c 56 s
9 7 25 N 41 d 57 t
10 8 26 O 42 e 58 u
11 9 27 P 43 f 59 v
12 A 28 Q 44 g 60 w
13 B 29 R 45 h 61 x
14 C 30 S 46 i 62 y
15 D 31 T 47 j 63 z
Beispiel
Binärfolge: | C001DE3AF8AA (Hexcode) |
Variante: | UUEncode (ohne Header/Footer) |
Kodiert: | k+5SCjWe |
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)
k + 5 S C j W e <-- Zeichenersatz für Werte