PHP
Referenzliste
pack
Sonstige-Funktionen
Befehl:
string pack ( string $format [, mixed $args [, mixed $... ]] )
Parameter-Liste:
Beschreibung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Die 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.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||
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.
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:
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:
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