Hallo Ihr zwei!
Jetzt habe ich auch den Rest hinbekommen. Hier kam die Sache mit der variierenden Code-Länge dazu ...
Mir geht es ja mehr ums Verstehen des Verfahrens.
Ich tue mein Bestes :-)
Die komprimierten Daten sollten (laut PSP) so aussehen:
10 04 31 48 31 07 25 B5 58 73 8F 44 59 98 C6 79 60 04
Bei der Kodierung der ersten 16 "Zeichen" kommen eigentlich nur die entsprechenden Codes heraus. Erst die zweite Zeile gibt dann bekannte Folgen wieder. Für die erste Zeile bekommen wir dann also sowas wie:
<CC> 0 1 2 3 4 5 6 7 8 9 A B C D E F
Währenddessen werden noch fleißig weitere Codes generiert:
01 - 01001
12 - 11001
23 - 00101
34 - 10101
45 - 01101
56 - 11101
67 - 00011
78 - 10011
89 - 01011
9A - 11011
AB - 00111
BC - 10111
CD - 01111
DE - 11111 <- hier liegt nun der Knackpunkt *)
EF - 000001
*) an dieser Stelle ist der 5-stellige Code ausgereizt. Per sofort wird auf 6-stellig umgeschaltet. Das heißt also auch, daß das F aus der ersten Zeile schon 6-stellig ausgegeben wird. Die zweite Zeile wird dann über zweistellige Strings kodiert:
01 23 45 67 89 AB CD EF
Nun alles zusammen:
5stellig: <CC> 0 1 2 3 4 5 6 7 8 9 A B C D E dies sind 16 Codes = 16*5 Bits = 10 Bytes
=> 10 04 31 48 31 07 25 B5 58 73 (siehe vorheriges mailing)
6stellig:
F 01 23 45 67 89 AB CD EF <EOI>
111100 010010 001010 011010 000110 010110 001110 011110 000010 100010
= 8stellig:
11110001 00100010 10011010 00011001 01100011 10011110 00001010 0010-0000
8F 44 59 98 C6 79 60 04
(das Bitdrehen habe ich diesmal gespart)
Somit ist dann die Vorgabe von PSP nachvollzogen. Hoffentlich habe ich hier auch alles wichtige niedergeschrieben ;-)
Jörk