hi,
bischen ausführlicher, heute morgen war meine Zeit knapp ;)
Beispiele in Perl, dürfte auch mit PHP genauso funktionieren:
my @liste = unpack "N", "WORD"; # Erzeuge genau einen Integer aus 4 Byte
print "@liste\n"; # sehe die Zahl 1464816196
# Nehme die Zahl 1464816196 und erzeuge die 4 Bytes:
print pack("N", 1464816196), "\n"; # sehe "WORD"
# Nehme die Zahl und Schablone "V":
print pack("V", 1464816196), "\n"; # sehe "DROW"
# Unterschied ist klar, V dreht die Bytes rum.
Die Schablone "N" oder "V" passt also genau auf 4 byte, 32 bit. Hastu
my @liste = unpack "NN", "WORDWORD"; # Erzeuge genau zwei Integer aus 8 Byte
print "@liste\n"; # siehst Du 1464816196 1464816196
Beachte, dass Bytes nicht immer als Text lesbar sind, aber "WORD" ist ein schönes Beispiel ;)
Der Vollständigkeit halber nehmen wir mal eine andere Schablone:
my @liste = unpack "CCCC", "WORD"; # Erzeuge eine Liste
print "@liste\n"; # siehst Du: 87 79 82 68
Schablone "C" steht im Gegensatz zu "N" nicht für 4 byte, sondern für 1 byte. Die Umkehrung von pack() zu unpack() ist nun hoffentlich verständlich.
Anmerkung: Schablone "N" oder "V" erzeugt aus _jeder_ Zahl, egal ob 1 oder 99 oder 125343 stets genau 4 byte. Dies ist die Grundlage dafür, Datenstrukturen in Binärsequenzen zu transformieren und umgekehrt: Binärdateien zu lesen. In der letzten Ausgabe des Perl-Magazin "Foo" gibt es dazu einen Artikel von mir,
Viele Grüße,
Rolf Rost (Hotti)