Trennung der Bytes bei untersch. Länge?

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.

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

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.

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

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.