[Vienna-pm] Gibt es eigentlich ..

gooly at gmx.at gooly at gmx.at
Fri Apr 27 07:03:08 PDT 2007


Am Freitag, 27. April 2007 schrieb Wolfgang Laun:
> gooly at gmx.at wrote:
> >Hmm,
> >mein Fehler, ich war nicht genau genug.
>
> Und jetzt wohl auch noch nicht...
ja, sorry für meine 'delay' kämpfe gerade an einer anderen 'Front': 
Aufeinmal geht die HD-LED nicht mehr aus (seit 6 Stunden!! jetzt), und 
lap-top-mode kann die Platte nicht runterfahren ..
Sonst funktioniert alles, kannmich einloggen, ein lsof +D /
bringt eine lange Liste nach heftigem (hörbaren) HD-Zugriffen, dann 
ist's wieder still und die LED leuchtet immer noch.

> >Jedes Zeichen wird ja normalerweise mit 8 oder 16 bit 'ver-coded',
> > 10 Zahlen wäre so 80 oder 160 bit - richtig?
> >Wenn ich aber _nur_ 16 Zeichen habe, bräuchte ich eigentlich nur 3
> > bit
>
> 000, 001,...111 sind wie viele Zeichen?
ähmm, 8, peinlich, ja, 4 bit.
>
> Ist das Alphabet der 16 Zeichen für alle Strings das selbe?
>
> Warum kann der Datenstrom nicht insgesamt gezippt werden?
Ist halt nicht nur von a nach b sondern von a nach 1,2,3,4,5,6,7, ... 
Dies 1-to-Many ist nicht ganz einfach.
>
> >um alles zu codieren, ergo nur 30 bits ergo 38% bzw 12,5%. Eventuell
> >noch eine kleine weitere Verbesserung, wenn man das häufigste
> > Zeichen zB den Delimiter ';' mit zwei statt drei bits 'ver-coded'
> > und eventuell noch mehr, wenn man nicht alle 16 braucht.
> >
> >So müsste dann den resultierende String bitweise zusammenbaut
> > werden.
> >
> >Insofern wäre halt nicht der String als Ganzes sondern es muss jedes
> >einzelne Zeichen bearbeitet werden. Ich dachte an eine Funktion, der
> >man den Zeichensatz und den String übergibt und der den
> > komprimierten String zurückgibt:
> >Ich stellte mir daher so etwas vor:
> >  foreach my $s ((split //, $orgStr)) {
> >     setNext3Bits( $s );
> >  }
> >Ich bräuchte dann auch eine 3Bit-Kombination als Zeilenende oder
> >Recordende.
> >Zum (De-) Kompriemieren brauch daher nur an beiden 'Enden' den hash
> > bzw die Zuordnung:
> >   Zeichen => 3BitCode,
> >...
> >  3BitCode => Zeichen
> >
> >Am Freitag, 27. April 2007 schrieb Wolfgang Laun:
> >>Die gewünschten Zeichen (max. 16) können mit tr/// auf [0-9a-f]
> >>abgebildet werden. Diese können mit pack auf die halbe Länge
> >> gepackt werden. Die Umkehrung ist trivial. Vermutlich ist es
> >> notwendig, die ursprünglichen Länge mitzupacken, da mit 'H*' immer
> >> eine gerade Anzahl von Zeichen entpackt wird (vgl. 2. Test).
> >>
> >>my $s = "abcdefghijklmnop";
> >>print "s=$s\n";
> >>$s =~ tr/abcdefghijklmnop/0123456789abcdef/;
> >>my $p = pack( 'H*', $s );
> >>print "length p = " . length( $p ) . "\n";
> >>my $u = unpack( 'H*', $p );
> >>$u =~ tr/0123456789abcdef/abcdefghijklmnop/;
> >>print "u=$u\n";
> >
> >hmm, brauch ich da nicht zum dekomprimieren den Orginalcode anyway?
>
> Was für einen Originalcode? Die Abbildung von 16 Zeichen auf [0-9a-f]
> wird im 2. tr/// umgedreht. Annahme ist (s.o.), dass alle Strings
> dasselbe Alphabet
> verwenden.
Ok, jetzt verstanden, Dein Zeichen-Set war a-p, und schaute so wie der 
string $s aus, das hat ich übersehen), ausprobiert und klappt - Danke!
Aber 'was mach ich nur mit meiner HD??

Calli


More information about the Vienna-pm mailing list