Thorsten Steffen: dt. Doku zu inflate deflate gesucht

Hio,

kennt jmd ne recht gute und (möglichst) in dt. verfasste Dokumentation über deflate und inflate von Strings.
Ich suche etwas, das Schritt für Schritt erklärt und so dass ich es evtl. selbst Programmieren könnte (dann hab ichs verstanden ^^)
Ich hab mich durch diverse Dokus/Scripte durchgewälzt aber so richtig den Durchblick nicht dabei gefunden. Die RFC liesst sich mehr als trocken und die Übersetzung fällt mir mehr als schwer.

gl & hf

Thorsten

  1. Hallo Thorsten,

    kennt jmd ne recht gute und (möglichst) in dt. verfasste
    Dokumentation über deflate und inflate von Strings.

    Du suchst also eine Doku zum Ablassen und Aufblasen von
    Strings?

    Ich hab mich durch diverse Dokus/Scripte durchgewälzt aber
    so richtig den Durchblick nicht dabei gefunden. Die RFC
    liesst sich mehr als trocken und die Übersetzung fällt mir
    mehr als schwer.

    Es gibt dazu sogar eine RFC?

    Mal ganz im Ernst: du musst schon sagen, welchen
    Kompressions-Algorithmus du meinst.

    Gruesse,
     CK

    --
    http://cforum.teamone.de/
    http://wishlist.tetekum.de/
    If God had meant for us to be in the Army, we would have been born with green, baggy skin.
    1. Hi Christian,

      Du suchst also eine Doku zum Ablassen und Aufblasen von
      Strings?

      nö, lieber mal net ^^
      Kleiner Tipp, nicht alles eignet sich zum Übersetzen ins deutsche ;)

      Es gibt dazu sogar eine RFC?

      RFC 1951 DEFLATE Compressed Data Format Specification

      mich fasziniert das Thema, komme aber mit der RFC nicht so recht klar.
      Ideal wäre eine deutsche Doku mit einem Beispiel für "deflate" und für "inflate"

      gruss

      Throsten

  2. Hio,

    ok, vielleicht war mein Post ein Schnellschuss :) daher versuch ich mein Problem mal näher zu Beschreiben, in der Hoffnung jmd rettet micht vor dem Wahnsinn ;)

    Im Prinzip suche ich ein Artikel, Doku oder irgendetwas, dass mit erklären kann wie ich von einem unkomprimierten String zu dem Ergebnis komme das mir die PHP-Funktion gzdeflate() liefert. Und wenn möglich byte für byte :)
    Und wie ich von dem komprimierten String nachvollziehen kann wie der unkomprimierte String zurückgebildet wird.

    Soviel ich verstanden habe, spielt für gzdeflate() 2 Komprimierungs-Algorithmen eine Rolle, LZW und Huffmann.

    Huffmann denke ich habe ich soweit verstanden. Es wird eine Code-Tabelle erzeugt, dir für jedes Zeichen eine bitfolge festlegt, wobei häufig vorkommende Zeichen kurze bitfolgen bekommen.

    Somit würde sich das Wort Hallo wie folgt aufschlüsseln lassen

    H           111
    a           10
    l           0
    o           110

    und würde sich komprimiert so präsentieren

    1111000110

    nur wie weiss ich nun das 111 ein H darstellt und nicht zufällig ein u oder ein t. Rein in der Form ist ja nicht nachzuvollziehen welcher Code welches Zeichen repräsentiert.

    Also brauche ich ja eine "Übersetzungtabelle" in der die einzelnen Zeichen mit ihrem bitfolgen beschrieben werden. Nur wie diese genau funktioniert konnte ich nicht genau herausfinden bisher.
    Irgendwo konnte ich lesen, das die "Übersetzungtabelle" mit dem am seltesten vorkommenden Zeichen beginnt und desweiteren als Trenner funktioniert und auch zur definition neuer Einträge in die Übersetzungtabelle" dient. Wie genau das funktionieren soll, noch keine Ahnung.

    Ich kann das bisher noch nicht so recht nachvollziehen, zumal wenn ich mir das Ergebnis gzdeflate("Hallo") ausgeben lasse ich folgende bitfolge bekomme 11110011010010001100110011001001110010010000011100000000

    wenn ich nun versuche nachzuvollziehen wie es dazu gekommen ist, .... ;)

    Hoffe irgendwer erbamt sich meiner und rettet mich vor dem Wahnsinn.

    gruss

    Thorsten

    Nur, wie weiss ich das

    1. Moin,

      Also brauche ich ja eine "Übersetzungtabelle" in der die einzelnen Zeichen mit ihrem bitfolgen beschrieben werden. Nur wie diese genau funktioniert konnte ich nicht genau herausfinden bisher.

      LZW funktioniert so, dass die Tabelle beim Übertragen der Informationen quasi nebenbei aufgebaut wird. Die ersten 256 Einträge der Tabelle entsprechen erstmal den normalen 256 Bytes. Danach läuft eine Schleife durch: Es nimmt so lange Eingabezeichen in einen temporären String wie es einen Tabelleneintrag für diesen String gibt. Sobald er an eine Stelle kommt wo ein neues Zeichen dazu führen würde, dass dieser String keinen Tabelleneintrag mehr hat, schreibt er den Code für den bis daher angesammelten String raus, schreibt das Zeichen raus und macht einen neuen Tabelleneintrag für den String mit dem angehängten Zeichen. Sobald die Tabelle voll ist, macht man sie wieder leer und beginnt von vorne.
      (Modulo Ungenauigkeiten in meinem Gedächtnis. Ich habe vor langer, langer Zeit mal ein Tutorial dazu gelesen. Das finde ich jetzt aber nicht wieder.)

      Dadurch wird die Codetabelle quasi nebenbei aufgebaut und muß nicht extra übermittelt werden. Trotzdem komprimiert das ganz gut.

      --
      Henryk Plötz
      Grüße aus Berlin
      ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
      ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~