pl: Typkonvertierung in C bzw. Perl

Beitrag lesen

Hi,

nun die Halbbytes gibt es ja doch: Nibbles. Ist mir nur gestern nicht eingefallen 😉

Zu Perl's pack/unpack, es gibt da eine Eselsbrücke:

pack() packt zusammen und erzeugt die Bytes aus Integerwerten. pack "C", 65 erzeugt also ein Byte was aussieht wie ein A. Mehrere Bytes heißt mehrere Platzhalter in der Schablone, so erzeugt pack "CCCC", 56,66,67,68 die Binary ABCD. unpack() ist die Umkehrung, Zahlen links, Binary rechts.

In C gibt es mehrere Möglichkeiten. fprintf(stdout,"%c%c%c%c", 65,66,67,68) würde dasselbe machen wie pack obenstehend. Es gänge aber auch so in C:

    unsigned char a[4] = {65,66,67,68};
    fwrite(a, sizeof a, 1, stdout);

womit diese 4 Bytes gleich am Stück in das Handle geschrieben werden was natürlich auch eine Datei sein kann. Interessant wirds mit 4 Bytes, wenn Du aus der Großrechnerwelt kommt, die Packschblone V steht für Vax. In C ist das uint32_t und das ist ein Little Endian.

Und schließlich steht die Packschablone "V" für 4 Bytes die man in Perl mit "C4" bekommt.

MfG