Trennung der Bytes bei untersch. Länge?

Von: , Frage gestellt am So, 22. Jul 2001

Hi User,

wie trennen Hard- und Software den Datenstrom von Bits in die einzelnen Bytes auf? Bie fester Länge, z. B. immer 8 Bit je Byte muß man ja nur durchzählen. Wie aber ist das z. B. bei Huffman-Codierten Daten, bei denen die neudefinierten Zeichen (häufige mit kurzem, seltene mit langem Code) schließlich irgendwie auseinandergehalten werden müssen? (*korks*)

Frage verstanden?

Es dankt und grüßt
R o b.

4 Antworten zu dieser Frage

  1. Antwort von nach 25 Minuten 0 hilfreich
    Re: Trennung der Bytes bei untersch. Länge?

    wie trennen Hard- und Software den Datenstrom von Bits in die
    einzelnen Bytes auf? Bie fester Länge, z. B. immer 8 Bit je
    Byte muß man ja nur durchzählen. Wie aber ist das z. B. bei
    Huffman-Codierten Daten, bei denen die neudefinierten Zeichen
    (häufige mit kurzem, seltene mit langem Code) schließlich
    irgendwie auseinandergehalten werden müssen? (*korks*)
    aeh, du solltest dir die grundlagen der huffmann-kodierung nochmal zu gemuete fuehren...

    iirc gab es da so nen binaeren baum, und wenn man auf einem blatt angekommen war, war das zeichen halt zuende...

    joachim

    • Antwort von nach 38 Minuten 0 hilfreich
      Re^2: Trennung der Bytes bei untersch. Länge?

      aeh, du solltest dir die grundlagen der huffmann-kodierung
      nochmal zu gemuete fuehren...

      iirc gab es da so nen binaeren baum, und wenn man auf einem
      blatt angekommen war, war das zeichen halt zuende...
      Hey Joe,

      ich habe mir die Erklärungen zur Funktionsweise recht gründlich angesehen, aber hinsichtlich meiner Fragestellung habe ich nichts gefunden, was mich weiterbringt.

      Ich will die Frage mal anders stellen: Sei 100010101110101101011010110101011010001011101011011011 ein Hufmann-Kodierter Grußtext, e=1, s=0, t=01, r=00, n=11, a=10, b=001, g=011, i=010, z=100, u=111, d=010. Nu mach mal ;o)

      R o b.

      • Antwort von nach 6 Stunden 0 hilfreich
        Re^3: Trennung der Bytes bei untersch. Länge?

        Hallo Rossy. Ich will die Frage mal anders stellen: Sei
        100010101110101101011010110101011010001011101011011011 ein
        Hufmann-Kodierter Grußtext, e=1, s=0, t=01, r=00, n=11, a=10,
        b=001, g=011, i=010, z=100, u=111, d=010. Nu mach mal ;o)
        So wird das nix, weil tatsächlich nicht zu unterscheiden ist, ob '11' für 'ee' oder 'n' steht (z.B.) Deshalb wird auch kein (funktionierender) Huffmann-Algorithmus diese kodierung erzeugen. Würde tatsächlich 'e' als '1' kodiert, würde der Code für jedes andere Zeichen mit einer '0' beginnen. Entsprechendes gilt für längere Codes. Wenn ein Zeichen als '101' kodiert wird, gibt es keine Kodierung '101x...', sondern nur '100x...' . Auf diese Weise ist immer eindeutig, wann ein Zeichen 'fertig' ist.

        l = 11
        a = 101
        e = 100
        t = 011
        _ = 010
        j = 0011
        z = 0001
        s = 0010
        k = 000001
        r = 000010
        ? = 000011
        
        001110001100010110101011111100001001000000111101000010000011
        


        Gruß, Ralf

        • Antwort von nach einem Tag 0 hilfreich
          Ah: Stopbits in jedem Byte integriert...Klar!

          Ich will die Frage mal anders stellen: Sei
          100010101110101101011010110101011010001011101011011011 ein
          Hufmann-Kodierter Grußtext, e=1, s=0, t=01, r=00, n=11, a=10,
          b=001, g=011, i=010, z=100, u=111, d=010. Nu mach mal ;o)
          So wird das nix, weil tatsächlich nicht zu unterscheiden ist,
          ob '11' für 'ee' oder 'n' steht (z.B.) Deshalb wird auch kein
          (funktionierender) Huffmann-Algorithmus diese kodierung
          erzeugen. Würde tatsächlich 'e' als '1' kodiert, würde der
          Code für jedes andere Zeichen mit einer '0' beginnen.
          Entsprechendes gilt für längere Codes. Wenn ein Zeichen als
          '101' kodiert wird, gibt es keine Kodierung '101x...', sondern
          nur '100x...' . Auf diese Weise ist immer eindeutig, wann ein
          Zeichen 'fertig' ist.

          l = 11
          a = 101
          e = 100
          t = 011
          _ = 010
          j = 0011
          z = 0001
          s = 0010
          k = 000001
          r = 000010
          ? = 000011
          
          001110001100010110101011111100001001000000111101000010000011
          

          Hi Ralf,

          nu isses klar. Ich hatte bei den bisher erzeugten Demo-Huffman-Codes nicht darauf geachtet, so macht das Sinn.

          Aber ich glaube, auf einer der Demos im Netz läuft die Sache tatsächlich falsch. Wenn ich's gefunden habe, mailde ich mich noch mal.

          Danke und Grüße
          R o b.

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!