Du bist hier: Tips » Scripte » PHP
PHP
Referenzliste

pack

Sonstige-Funktionen

    Befehl:
string pack ( string $format [, mixed $args [, mixed $... ]] )


    Parameter-Liste:
NameBeschreibung
formatDie Zeichenkette format besteht aus Format-Codes, gefolgt von einem optionalen Wiederholungs-Argument. Dieses Argument kann ein ganzzahliger Wert sein oder ein * für Wiederholung bis ans Ende der Daten. Bei den Format-Codes a, A, h und H gibt das Wiederholungs-Argument an, wie viele gleiche Zeichen folgen. Im Zusammenhang mit "@" gibt das Wiederholungs-Argument die absolute Position an, ab der das nächste Zeichen steht. Bei allen anderen steht der Wiederholungs-Zähler für die Anzahl der benutzten Daten-Argumente, die in die sich ergebende Binär-Zeichenkette gepackt werden sollen.
pack()-Formatzeichen
CodeBeschreibung
amit NUL gefüllte Zeichenkette
Amit Leerzeichen gefüllte Zeichenkette
hHex-Zeichenkette, unterer Halbwert zuerst
HHex-Zeichenkette, oberer Halbwert zuerst
cvorzeichenbehaftetes Zeichen
Cvorzeichenloses Zeichen
svorzeichenbehafteter Short-Typ (immer 16 Bit, Byte-Folge maschinenabhängig)
Svorzeichenloser Short-Typ (immer 16 Bit, Byte-Folge maschinenabhängig)
nvorzeichenloser Short-Typ (immer 16 Bit, Byte-Folge Big Endian)
vvorzeichenloser Short-Typ (immer 16 Bit, Byte-Folge Little Endian)
ivorzeichenbehaftete Ganzzahl (Grösse und Byte-Folge maschinenabhängig)
Ivorzeichenlose Ganzzahl (Grösse und Byte-Folge maschinenabhängig)
lvorzeichenbehafteter Long-Typ (immer 32 Bit, Byte-Folge maschinenabhängig)
Lvorzeichenloser Long-Typ (immer 32 Bit, Byte-Folge maschinenabhängig)
Nvorzeichenloser Long-Typ (immer 32 Bit, Byte-Folge Big Endian)
Vvorzeichenloser Long-Typ (immer 32 Bit, Byte-Folge Little Endian)
qvorzeichenbehafteter Long-Long-Typ (immer 64 bit, maschinenabhängig)
Qvorzeichenloser Long-Long-Typ (immer 64 bit, maschinenabhängig)
Jvorzeichenloser Long-Long-Typ (immer 64 bit, Byte-Folge Big Endian)
Pvorzeichenloser Long-Long-Typ (immer 64 bit, Byte-Folge Little Endian)
fGleitkommazahl (maschinenabhängige Grösse und Wiedergabe)
dDouble-Typ (maschinenabhängige Grösse und Wiedergabe)
xNUL Byte
Xgeht in der Zeichenkette ein Byte rückwärts
ZNUL-aufgefüllte Zeichenkette (neu in PHP 5.5)
@NUL-Auffüllung bis zur absoluten Position
args 

    Rückgabewerte:
Gibt die Daten als Binär-Zeichenkette zurück.

    Beschreibung:
Packt die angegebenen Argumente unter Beachtung von format in eine Binär-Zeichenkette.

Die Idee für diese Funktion entstammt Perl. Alle Formatierungs-Anweisungen funktionieren genau wie dort, allerdings fehlen in PHP einige Format-Codes von Perl (z.B. "u").

Beachten sie, dass der Unterschied zwischen vorzeichenlosen und vorzeichenbehafteten Werten nur Einfluss auf die Funktion unpack() hat, wogegen die Funktion pack() bei vorzeichenlosen und vorzeichenbehafteten Format-Codes dasselbe Ergebnis liefert.

Beachten sie auch, dass PHP Ganzzahlwerte intern als vorzeichenbehaftete Werte speichert, deren Grösse vom Maschinentyp abhängig ist. Wenn Sie PHP einen vorzeichenlosen Ganzzahlwert geben, der für diese Art der Speicherung zu gross ist, wird er in eine Gleitkommazahl umgewandelt, was oft zu unerwünschten Ergebnissen führt.


    Aktiv in Version:
(PHP 4, PHP 5, PHP 7)

    Achtung:
Vorsicht:

Beachten Sie, dass PHP speichert intern Integer-Werte als signierte Werte eines maschinenabhängige Grösse (Typ C) zu. Integer-Literale Zahlen und Operationen, die ausserhalb der Grenzen der Integer-Typ ergeben wird als Float abgelegt werden. Bei der Verpackung dieser Schwimmer als ganze Zahlen sind, werden sie zunächst in den Integer- Typ umgewandelt . Dies kann oder kann nicht in der gewünschten Byte-Muster führen.

Der wichtigste Fall ist, wenn die Verpackung unsigned Zahlen, die darstellbar sein mit der Integer-Typ wäre, wenn es ohne Vorzeichen waren . In Systemen, in denen die Integer-Typ verfügt über einen 32 -Bit- Grösse, führt die Besetzung in der Regel in der gleichen Byte-Muster , als ob die ganze Zahl ohne Vorzeichen waren (obwohl dies stützt sich auf die Implementierung definiert unsigned unterzeichnet Umbauten, nach der C -Standard). In Systemen, wo die Ganzzahl -Typ mit 64 -Bit- Grösse, der Schwimmer wahrscheinlich nicht über eine Mantisse gross genug, um den Wert ohne Verlust an Genauigkeit zu halten. Wenn diese Systeme haben auch eine native 64 -Bit- int-Typ C (die meisten UNIX-ähnlichen Systemen nicht) , die einzige Möglichkeit, die ich Pack -Format im oberen Bereich zu verwenden, ist integer negative Werte mit der gleichen Byte-Darstellung als die erstellen gewünschten Wert ohne Vorzeichen.


    Siehe auch:
Entpackt die Daten eines Binär-Strings
 

pack() - Beispiel:


Eingabe:
<?php
$binaerdaten = pack("nvc*", 0x1234, 0x5678, 65, 66);
?>


Ausgabe:
Die sich daraus ergebende Bin�r-Zeichenkette ist sechs Bytes lang und enth�lt die Byte-Folge 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.

Beschreibung:
Version Beschreibung
5.6.3 Die "q", "Q", "J" und "P" Codes wurden hinzugefügt, um die Arbeit mit 64-bit Zahlen zu ermöglichen.
5.5.0 Die "Z"-Code wurde mit gleichwertigen Funktionen auf "a" für Perl-Kompatibilität hinzugefügt.
Sonstige-Funktionen