Base85-Z85 Code
| Kategorisierung: | Kodierungen / binärbasiert |
| Siehe auch: | UUEncode, Base32, Base64, Base85, ASCII85 |
| Herkunft / Verwendung: | Die Z85-Variante der Base85 Codierung verwendet andere Zeichen als ASCII85 und verzichtet z. B. auf die Anführungszeichen / Hochkommata (String-Begrenzungen), um sie besser in Source-Codes integrieren zu können. Base85 ist ähnlich Base64 ein weiteres Verfahren zur Abbildung von 8-bit-Binärdaten auf lesbare ASCII-Zeichen. Hier werden allerdings 85 Zeichen benutzt. So ist der Overhead nur 25% statt 33% bei Base64. Es werden jeweils 4 Bytes der Binärdaten auf 5 Bytes Base85-Code abgebildet. Der codierte Text wird so ein viertel größer als die Binärdaten. |
Beschreibung des Algorithmus
Vier Bytes können 2564 = 4.294.967.296 verschiedene mögliche Zustände annehmen. Um diese mit möglichst geringem Overhead zu kodieren, wählt man eine geeignete Teilmenge aus den druckbaren ASCII-Zeichen aus, die es ermöglicht, mit 5 Zeichen auszukommen. Hierfür ist ein Alphabet von mindestens 85 Zeichen nötig, da 855 = 4.437.053.125 = 4.294.967.296 ist.Für die Kodierung werden die vier Bytes als vierstellige Zahl zur Basis 256 aufgefasst und in eine fünfstellige Zahl zur Basis 85 umgewandelt. Die "Ziffern" der Basis-85-Zahl wird dann nach folgender Tabelle in durckbare ASCII-Zeichen ersetzt:
0 0 17 h 34 y 51 P 68 !
1 1 18 i 35 z 52 Q 69 /
2 2 19 j 36 A 53 R 70 *
3 3 20 k 37 B 54 S 71 ?
4 4 21 l 38 C 55 T 72 &
5 5 22 m 39 D 56 U 73 <
6 6 23 n 40 E 57 V 74 >
7 7 24 o 41 F 58 W 75 (
8 8 25 p 42 G 59 X 76 )
9 9 26 q 43 H 60 Y 77 [
10 a 27 r 44 I 61 Z 78 ]
11 b 28 s 45 J 62 . 79 {
12 c 29 t 46 K 63 - 80 }
13 d 30 u 47 L 64 : 81 @
14 e 31 v 48 M 65 + 82 %
15 f 32 w 49 N 66 = 83 $
16 g 33 x 50 O 67 ^ 84 #
Beispiel
| Binärfolge: | C001C0DE (Hexcode) |
| Kodiert: | ZYzmc |
c0 01 c0 de <-- hexadezimal (Basis 16)
11000000 00000001 11000000 11011110 <-- binär (Basis 2)
3221340382 <-- dezimal (Basis 10)
(61) (60) (35) (22) (12) <-- Basis 85 (Ziffernwertigkeit dez.)
Z Y z m c <-- ASCII-Zeichen