Popis
string
pack
( string format [, mixed args])
Sbalí
předané
argumenty
do
binárního
řetězce
podle
argumentu
format
.
Vrací
binární
řetězec
obsahující
předaná
data
.
Nápad
na
tuto
funkci
byl
převzat
z
Perlu
,
a
všechny
formátovací
kódy
fungují
stejně
jako
tam
,
nicméně
,
některé
formátovací
kódy
chybí
,
jako
například
Perlovský
formátovací
kód
"
u
"
.
Formátovací
řetězec
sestává
z
formátovacích
kódu
následovaných
volitelným
opakovacím
argumentem
.
Opakovací
argument
může
být
buď
celočíselná
hodnota
,
nebo
*
pro
opakování
do
konce
vstupních
dat
.
U
a
,
A
,
h
,
H
počet
opakování
určuje
,
kolik
znaků
se
vezme
z
jednoho
datového
argumentu
,
u
@
je
to
absolutní
pozice
,
kde
se
mají
umístit
další
data
,
u
všeho
ostatního
počet
opakování
určuje
,
kolik
datových
argumentů
se
spotřebuje
a
sbalí
do
výsledného
binárního
řetězce
.
V
současnosti
jsou
implementovány
-
a
řetězec
doplněný
NUL
hodnotami
-
A
řetězec
doplněný
SPACE
hodnotami
-
h
Hex
řetězec
,
spodní
slabika
první
-
H
Hex
řetězec
,
horní
slabika
první
-
-
-
s
signed
short
(
vždy
16
bitů
,
machine
byte
order
)
-
S
unsigned
short
(
vždy
16
bitů
,
machine
byte
order
)
-
n
unsigned
short
(
vždy
16
bitů
,
big
endian
byte
order
)
-
v
unsigned
short
(
vždy
16
bitů
,
little
endian
byte
order
)
-
i
signed
integer
(
velikost
a
pořadí
bytů
závislá
na
systému
)
-
I
unsigned
integer
(
velikost
a
pořadí
bytů
závislá
na
systému
)
-
l
signed
long
(
vždy
32
bitů
,
machine
byte
order
)
-
L
unsigned
long
(
vždy
32
bitů
,
machine
byte
order
)
-
N
unsigned
long
(
vždy
32
bitů
,
big
endian
byte
order
)
-
V
unsigned
long
(
vždy
32
bitů
,
little
endian
byte
order
)
-
f
float
(
velikost
a
reprezentace
závislá
na
systému
)
-
d
double
(
velikost
a
reprezentace
závislá
na
systému
)
-
-
-
Příklad
1
.
pack(
)
formátovací
řetězec
Výsledný
binární
řetězec
bude
6
bytů
dlouhý
,
a
bude
obsahovat
bytovou
sekvenci
0x12
,
0x34
,
0x78
,
0x56
,
0x41
,
0x42
.
|
Všimněte
si
,
že
rozdíl
mezi
hodnotami
se
znaménkem
a
bez
znaménka
ovlivňuje
pouze
funkci
unpack(
)
,
zatímco
funkce
pack(
)
dává
stejný
výsledek
pro
formátovací
kódy
se
znaménkem
i
bez
znaménka
.
Dále
si
všimněte
,
že
PHP
interně
ukládá
celočíselné
hodnoty
jako
hodnoty
se
znaménkem
o
velikosti
závislé
na
systému
.
Pokud
zadáte
hodnotu
bez
znaménka
,
která
bude
příliš
velká
,
než
aby
se
dala
takto
uložit
,
převede
se
na
double
,
což
často
vytváří
nežádoucí
výsledky
.