2009-06-12 9 views
35

Ich möchte mehr über die pack() Funktion in PHP wissen: http://fi.php.net/manual/en/function.pack.phpKann mir jemand die pack() Funktion in PHP erklären?

Ich weiß, dass es Daten in binäre packt, aber ich bin nicht sicher, was alle, v V n N c C bedeuten, und ich habe mich gefragt, wenn jemand freundlich sein könnte und mir eine praktische Demonstration geben könnte, wann welche Formate zu verwenden sind?

Die Online-Dokumentation, für die Änderung, fehlt meiner Meinung nach Informationen. Diejenigen

Antwort

21

darstellen, wie Sie die Daten wollen Sie packen im Binärformat dargestellt werden:

so

$bin = pack("v", 1); => 0000000000000001 (16bit)

wo

$bin = pack("V", 1) => 00000000000000000000000000000001 (32 Bit)

Es teilt Pack, wie Sie die Daten in den Binärdaten dargestellt wollen. Der folgende Code demonstriert dies. Beachten Sie, dass Sie mit einem anderen Format auspacken können, als Sie die Daten gepackt haben.

<?php 

$bin = pack("S", 65535); 
$ray = unpack("S", $bin); 
echo "UNSIGNED SHORT VAL = ", $ray[1], "\n"; 

$bin = pack("S", 65536); 
$ray = unpack("S", $bin); 
echo "OVERFLOW USHORT VAL = ", $ray[1], "\n"; 

$bin = pack("V", 65536); 
$ray = unpack("V", $bin); 
echo "SAME AS ABOVE BUT WITH ULONG VAL = ", $ray[1], "\n"; 
?> 
10

Wie in der PHP-Dokumentation für das Paket erwähnt, ist die Funktion von Perl Pack-Funktion entlehnt.

Werfen Sie einen Blick auf Perl's documentation for pack, speziell die Beispiele Abschnitt ganz unten auf der Seite. Das Paket von PHP implementiert nicht alle Formate, aber Perls Dokumentation für die Funktion liefert bessere Beispiele und erklärt jedes Format.