pack

(PHP 3, PHP 4 >= 4.0.0)

pack -- Sbalφ data do binßrnφho °et∞zce.

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φ

  • 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.