Beschreibung:
string
pack
( string format [, mixed args])
Diese
Funktion
packt
ein
oder
mehrere
Argumente
-
unter
Beachtung
der
Argument-Formate
-
in
einen
Binär-String
.
In
dem
zurück
gegebenen
Binär-String
stehen
anschließend
die
Daten
.
Die
Idee
entstammt
Perl
.
Alle
Formatierungs-Anweisungen
funktionieren
genau
wie
dort
.
In
PHP
fehlen
aber
einige
Format-Codes
von
Perl
(
z.B
.
"u"
)
.
Der
Format-String
besteht
aus
Format-Codes
,
gefolgt
von
einem
optionalen
Wiederholungs-Argument
.
Dieses
Argument
kann
ein
Integer-Wert
oder
ein
"
*
"
(für
Wiederholung
bis
ans
Ende
der
Daten
)
sein
.
Bei
"
a"
,
"A"
,
"h
"
und
dem
"H
"
Format-Code
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
den
Binär-String
gepackt
werden
sollen
.
Z
.
Zt
.
sind
folgende
Codes
implementiert
:
-
a
mit
NUL
gefüllte
Zeichenkette
(
String
)
-
A
mit
Leerzeichen
(
SPACE
)
gefüllte
Zeichenkette
(String
)
-
h
Hex
Zeichenkette
(
String
)
,
unterer
Halbwert
zuerst
-
H
Hex
Zeichenkette
(
String
)
,
höherer
Halbwert
zuerst
-
-
-
s
Short-Typ
mit
Vorzeichen
(
immer
16
Bit
,
Byte-Folge
maschinenabhängig
)
-
S
Short-Typ
ohne
Vorzeichen
(
immer
16
Bit
,
Byte-Folge
maschinenabhängig
)
-
n
Short-Typ
ohne
Vorzeichen
(
immer
16
Bit
,
big
endian
byte
order
)
-
v
Short-Typ
ohne
Vorzeichen
(
immer
16
Bit
,
little
endian
byte
order
)
-
i
Integer
mit
Vorzeichen
(
Größe
und
Byte-Folge
maschinenabhängig
)
-
I
Integer-Typ
ohne
Vorzeichen
(
Größe
und
Byte-Folge
maschinenabhängig
)
-
l
Long-Typ
mit
Vorzeichen
(
immer
32
Bit
,
Byte-Folge
maschinenabhängig
)
-
L
Long-Typ
ohne
Vorzeichen
(
immer
32
Bit
,
Byte-Folge
maschinenabhängig
)
-
N
Long-Typ
ohne
Vorzeichen
(
immer
32
Bit
,
big
endian
Byte
-
Folge
)
-
V
Long-Typ
ohne
Vorzeichen
(
immer
32
Bit
,
little
endian
Byte
-
Folge
)
-
f
Fließkomma-Typ
(
maschinenabhängige
Größe
und
Wiedergabe
)
-
d
Double-Typ
(
maschinenabhängige
Größe
und
Wiedergabe
)
-
x
NUL
Byte
-
X
Sichern
eines
Bytes
-
@
NUL-Auffüllung
bis
zur
absoluten
Position
Beispiel
1
.
Mit
Pack
formatierter
String
:
Der
sich
daraus
ergebende
Binär-String
ist
6
Bytes
lang
und
enthält
:
0x12
,
0x34
,
0x78
,
0x56
,
0x41
,
0x42
.
|
Bedenken
sie
,
dass
der
Unterschied
zwischen
vorzeichen-losen
und
vorzeichen-behafteten
Werten
nur
Einfluss
auf
die
Funktion
unpack(
)
hat
,
wogegen
dies
bei
der
Funktion
pack(
)
egal
ist
.
Beachten
sie
auch
,
dass
PHP
intern
Ganzzahl-Werte
als
vorzeichen-behaftete
Werte
speichert
,
deren
Umfang
vom
Maschinen-Typ
abhängig
ist
.
Geben
sie
PHP
einen
vorzeichen-losen
Ganzzahl-Wert
,
der
zu
groß
ist
für
diese
Art
der
Speicherung
,
wird
er
ins
Double-Format
umgesetzt
,
was
oft
zu
unerwünschten
Resultaten
führt
.