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