Zipprogramme?!

HI,

was ich schon lange einmal wissen wollte, wie werden Dateien mit z.B. Winzip, Winrar, … komprimiert. Was für eine Technik bzw. Programmiersprache wird dabei angewendet?

danke

dome

Hallo dome,

was ich schon lange einmal wissen wollte, wie werden Dateien
mit z.B. Winzip, Winrar, … komprimiert. Was für eine Technik
bzw. Programmiersprache wird dabei angewendet?

  1. Hat mit der verwendeten Programmiersprache rein gar nichts zu tun. In jeder Programmiersprache kannst du alle möglichen Algorihtmen schreiben. Nur ob du viel Code schreiben musst, oder halt nicht, hängt von der verwendeten Sprache ab. Wie schnell das Programm dann ist, hängt dann hauptsächlich vom verwendeten Compiler, oder Interpreter, ab.

Hier eine erläterung zum Huffman-Code
http://www.iti.fh-flensburg.de/lang/algorithmen/code…
http://www.ztt.fh-worms.de/de/sem/ws95_96/kompressio…

Ein anderes Verfahren nennt sich „Lempel Ziff Welch Code“
oder oft nur „Ziff Lempel“ genannt.
Google liefert einige gute seiten zu diesen Themen.

MfG Peter(TOO)

HI,

was ich schon lange einmal wissen wollte, wie werden Dateien
mit z.B. Winzip, Winrar, … komprimiert. Was für eine Technik
bzw. Programmiersprache wird dabei angewendet?

Ist von der Programmiersprache unabhängig.

Die einzelnen Verfahren basieren auf verschiedenen Ansätzen.

zip geht z.b. hauptsächlich über Ersetzungstabellen, ace über Matrixen, rar müsste eine eine lustige Mischung sein.

Ziel ist immer max. Entropie bzw. Informationsdichte.

Am einfachtes zu erklären ist eine alte Form von zip die nur ersetzt hat:

man sucht in der Datei (den Dateien) nach Muster die immer wieder kommen (in deinem Text wäre das z.b. „ein“ und „Win“). Diese werden vor die Datei in Tabellenform zusammen mit Schlüsseln abgespeichert

z.b:
¬ ein
¢ Win

und im Text ersetzt:

was ich schon lange ¬mal wissen wollte, wie werden Dateien
mit z.B. ¢zip, ¢rar, … komprimiert. Was für ¬e Technik
bzw. Programmiersprache wird dabei angewendet?

und wenn man das intelligent mach mit vielen Mustern (und vorallem generischen Mustern) wird die Datei kleiner.

bei generischen Mustern kann z.b. „war“ und „wer“ als Muster „w*r“ in die Tabelle kommen. Der fehlende Buchstabe muss dann hinters Symbol kommen.

Wie gesagt auf die schnelle Beispiele finden ist schwer, aber stell dirs mal mit längern Muster und einem grossen Text vor.

eine andere beliebte (und alte) Technik ist die Huffmann-Codierung (z.b. in jpg). Dabei werden Muster die häufig vorkommen durch kurze Bitfolgen dargestellt, Muster die nicht so häufig vorkommen mit langen. also nicht mehr 8 Bit pro Zeichen sondern variable Bitlänge. ist aufwendiger (welches Muster bekommt welche Bitlänge ?), bei ASCII-Text aber sehr effektiv (10:1) (nur etwa 100 der 256 möglichen Zeichen werdne reell benutzt).

ansonsten : www.google.com

Hi Dome,

schau mal unter dieser HP nach, da werden die Dateiformate
von den gängisten Systemen erklärt.

http://www.wotsit.org/

Gruss
Keiichi

Vielen Dank euch allen für die ausführlichen Antworten. Genau danach habe ich gesucht. Ich werde mir die vielen Informationen gleich mal anschauen.
Noch eine Frage: Welche Programmiersprache wäre, um ein Komprimierungsprogramm zu erstellen, am sinnvollsten?

dome

C
ist immernoch am schnellsten.

am einfachsten ist java, komprimiern ist da ein 1-Zeiler.