|
|
 |
pack (PHP 3, PHP 4 ) pack -- Sbalí data do binárního řetězce. Popisstring 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í
c signed char
C unsigned char
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)
x NUL byte
X Back up one byte
@ NUL-fill to absolute position
Příklad 1. pack() formátovací řetězec $binarydata = pack ("nvc*", 0x1234, 0x5678, 65, 66); |
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.
User Contributed Notes pack |
 |
| There are no user contributed notes for this page. |
| |