Pack-Algorithmus für Controller gesucht

Ich suche einen guten Pack-Algorithmus für Controller für folgende Randbedingungen:

- gepackt werden sollen ca. 600kb Text in Multibyte-Code

- jeder Textstring ist 3 - 40 Zeichen (*3 Multibyte-Code) groß

- jeder String muss einzeln entpackbar sein

- es wird nur eine Übersetzungstabelle verwendet, die auch im internen Flash liegt

- Komprimierung unter Win/DOS/Linux, Entpacken im Controller

- Entpacken sollte nicht mehr als 4k RAM benötigen

- Geschwindigkeit völlig unkritisch, da nur anzuzeigende Texte

- Freeware im Sourcecode

Da sowas bei größeren Prokekten sicher häufiger benötigt wird, hatte ich gehofft, sowas im Netz zu finden, aber bisher war meine Suche erfolglos, oder ich verwende nicht die richtigen Suchbegriffe.

Hat jemand vielleicht einen guten Tip für mich?

mfG Dirk

Reply to
Dirk Ruth
Loading thread data ...

Dirk Ruth schrieb:

[snip]

Hast Du da schon geschaut?

formatting link

Gruss Thomas

Reply to
Thomas Ruch

"Dirk Ruth" schrieb im Newsbeitrag news: snipped-for-privacy@4ax.com...

Damit hast du dir selbst ins Knie geschossen, es gibt praktisch keinen Kompressionscode, der effizient 3 bytes komprimiert.

Wenn alle Meldungen in derselben Sprache sind, hilft vielleicht phrase compression, man sortiert haeufige Wortfetzen in eine Tabelle ein und spechert an ihrer Stelle nur noch einen Verweis auf den Tabelleneintrag (z.B. 0..127 = normales Byte, 128..255 = Phrasentabelleneintrag) aber wenn es blockweise verschiedene Sprachen sind macht das nicht viel Sinn. Dann doch eher eine Kompression die sich selbst an die Sprache anpasst und ihre Tabellen on the fly bestimmt, also LZW, man muss halt Bloecke (mit Strings aus derselebn Sprache) komplett (de)komprimieren, bei dir heisst das 4k Bloecke weise und nicht stringweise. Immerhin musst du nur die sich dabei aufbauende Tabelle speichern und nicht die ganzen Strings des Blocks, du entnimmst einfach den gewuenschten (z.B. den 24ten und decodierst die anderen nach /dev/nul).

Diese blockweise Expansion ist nicht so ungewoehnlich, Leute die sich viel Gedanken gemacht haben, sind zu demselben Ergebnis gekommen: Komprimierung von Windows HLP Hilfe Dateien arbeitet mit Phrasen und blockweise LZW, siehe source in:

formatting link

Kein Angst, LZW Patente sind laengst abgelaufen und hatten in Europa gluecklicherweise nie Gueltigkeit, hoffentlich bleibt das auch so, egal wie viel Geld Lobbyisten z.B. von Microsoft in EU-Parlamentarier investieren.

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
de.sci.electronics FAQ: http://dse-faq.elektronik-kompendium.de/
Read 'Art of Electronics' Horowitz/Hill before you ask.
Lese 'Hohe Schule der Elektronik 1+2' bevor du fragst.
Reply to
MaWin

Och, man kann ja vorher umsortieren.. ABCABCABCABC = AAAABBBBCCCC. Wenn A und B die Codepage oder so angeben, sollte sich das danach packen lassen wie Puffreis.

Was soll das eigentlich für 'ne komische Zeichenkodierung mit 3 Byte sein?! Unicode hätte entweder 16 oder 32 Bit, und eigentlich würde man da eher UTF-8 zum abspeichern nehmen..

--
thomas.kindler@gmx.de,
www.bredobrothers.de
www.microsoft-hellhounds.de
Reply to
Thomas Kindler

Thomas Ruchschrieb: "

Danke, da werd ich ein paar Tage brauchen um alles durchzusehen.

mfG Dirk

Reply to
Dirk Ruth

MaWinschrieb: "

Es sind 30 Sprachen.

Schau ich mir mal näher an.

mfG Dirk

Reply to
Dirk Ruth

Es ist UTF-8, aber es wird nur max. 3Byte benötigt.

mfG Dirk

Reply to
Dirk Ruth

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.