Paare von Zahlen in 8Bit komprimieren

Gast #1744299
Lesenswert?

Ich suche eine mathematische Komprimierungslösung für folgendes Problem:

Ich habe jeweils zwei zusammengehörige Paare:
Wert Eins: 0 bis 255
Wert Zwei: 0 bis 255

Beispiel(Wert Eins, Wert Zwei, Wert Eins,...)
[0,0,104,44,0,8,109,44,0,8,110,94,0,13,106,94,0,120,112,39,0,0,114,39,0, 
0,0,26,0,0,114,46,0,0,110,39,0,0,106,114]
[0,127,112,33,0,0,114,39,0,0,0,26,0,0,114,39,0,0,110,39,0,0,110,71,0,170 
,106,39,0,0,104,39,0,0,101,26,0,0,104,39]

Ziel ist nun, diese Informationen möglichst platzsparend in eine Reihe 
von 8Bit-Zahlen zu komprimieren und wieder zu dekomprimieren.

Welcher Algorithmus - in Basic bestenfalls - erreicht dies?

Bei Unklarheiten nachfragen.
Gast #1744311
Lesenswert?

Das kann man nur sinnvoll komprimieren wenn diese Zahlenfolge 
Besonderheiten hat, die man ausnutzen kann, für eine x-beliebige Folge 
gibt es keine Kompression von der man sagen kann dass sie immer hilft.
in deinem Bsp sind z.b. Nullen recht häufig --> ist das immer so?
#1744320
Lesenswert?

Hallo Das Array,

der Trick bei eigentlich allen Komprimierungen ist, dass man nicht 
speichern muss, was man vorher schon weiß. Was kannst du über deine 
Daten sagen? Kommen bestimmte Werte/Kombinationen häufiger vor, sind die 
Änderungen zwischen zwei Wertepaaren häufig nur klein oder sie 
wiederholen sich sogar öfters? Davon hängt dann der Algorithmus ab.

Gruß, DetlevT
Gast #1744330
Lesenswert?

Martin: Meinst du den verfügbaren Speicherplatz oder die Anzahl der zu 
speichernden Paare?

abraxas, Detlev T.: Ja, Nullen sind recht häufig. Überhaupt ist das 
Beispiel symptomatisch für alle anderen. Im Grunde sind Wert Eins und 
Wert Zwei nicht alle Zahlen zwischen 0 und 255 sondern nehmen alle 
diskrete Zustände an. Und zwar diese bei Wert Eins:

1 - 7 - 14 - 21 - 27 - 33 - 37 - 43 - 47 - 52 - 56 - 60 - 64 - 68 - 71 - 
74 - 77 - 83 - 80 - 85 - 88 - 90 - 92 - 94 - 96 - 97 - 99 - 101 - 103 - 
104 - 105 - 106 - 108 - 109 - 110 - 111 - 113 - 112 - 114 - 115 - 116 - 
117 - 118 - 121 - 123 - 120

Ein ähnliches Muster bei Wert Zwei.
#1744332
Lesenswert?

Das Array schrieb:

> diskrete Zustände an. Und zwar diese bei Wert Eins:
>
> 1 - 7 - 14 - 21 - 27 - 33 - 37 - 43 - 47 - 52 - 56 - 60 - 64 - 68 - 71 -
> 74 - 77 - 83 - 80 - 85 - 88 - 90 - 92 - 94 - 96 - 97 - 99 - 101 - 103 -
> 104 - 105 - 106 - 108 - 109 - 110 - 111 - 113 - 112 - 114 - 115 - 116 -
> 117 - 118 - 121 - 123 - 120
>
> Ein ähnliches Muster bei Wert Zwei.

Sind immer noch zuviele.
Wenn du jedes aus 1 mit jedem aus 2 kombinieren kannst, gibt es mehr als 
256 verschiedene Kombinationen.
Egal wie du es drehst und wendest, du hast nicht mehr als 256 
unterscheidbare Zustände in einem Byte.

Wenn du da überhaupt etwas kompremieren kannst, dann musst du an der 
zeitlichen Entwicklung der zu übertragenden Reihe ansetzen. Denk aber 
daran: Wenn du nur Differenzen hast, hängt alles davon ab, das keine 
Differenz verloren geht.
Gast #1744340
Lesenswert?

Das Array schrieb:
> Im Grunde sind Wert Eins und
> Wert Zwei nicht alle Zahlen zwischen 0 und 255 sondern nehmen alle
> diskrete Zustände an. Und zwar diese bei Wert Eins:
>
> 1 - 7 - 14 - 21 - 27 - 33 - 37 - 43 - 47 - 52 - 56 - 60 - 64 - 68 - 71 -
> 74 - 77 - 83 - 80 - 85 - 88 - 90 - 92 - 94 - 96 - 97 - 99 - 101 - 103 -
> 104 - 105 - 106 - 108 - 109 - 110 - 111 - 113 - 112 - 114 - 115 - 116 -
> 117 - 118 - 121 - 123 - 120

das sind ja nur 46 zustände, also braucht man dafür nur 6bit. Damit 
hätte man schon 25% gespart.
Wie viele Kombinationen von wert1:wert2 gibt es?
Gast #1744365
Lesenswert?

Für Wert Zwei fand ich folgendes(Beispiel ist redundant):

166 - 156 - 10 - 72 - 10 - 34 - 6 - 20 - 10 - 4 - 2 - 3 - 7 - 15 - 30 - 
55 - 6 - 114 - 10 - 239 - 10 - 156 - 10 - 72 - 10 - 34 - 6 - 20 - 10 - 4 
- 2 - 3 - 7 - 15 - 30 - 55 - 6 - 114 - 10 - 239 - 10 - 156 - 10 - 72 - 
34 - 6 - 20 - 10 - 4 - 2 - 3 - 7 - 15 - 30 - 55 - 6 - 114 - 10 - 239
Gast #1744378
Lesenswert?

Alle Kombinationen sind möglich. Aber die gewöhnliche Verteilung ist 
[0,0,104,44,0,8,109,44,0,8,110,94,0,13,106,94,0,120,112,39,0,0,114,39,0, 
0,0,26,0,0,114,46,0,0,110,39,0,0,106,114]
[0,127,112,33,0,0,114,39,0,0,0,26,0,0,114,39,0,0,110,39,0,0,110,71,0,170 
,106,39,0,0,104,39,0,0,101,26,0,0,104,39]

PS: Jeweils 0 zufügen
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.