Pack - пакетира данни в двоичен низ
(PHP 3, PHP 4, PHP 5)
pack- пакетира данни в двоичен низ.
низpack(формат на низ [, смесени аргументи])
Пакетира дадените аргументи в двоичен низ според форматаformat. Връща двоичен низ с данни.
Идеята за тази функция е взета от Perl и целият код за форматиране работи по подобен начин, но някои кодове за форматиране липсват, като например "u" на Perl. Низът за форматиране се състои от кодове на формат, последвани от незадължителен аргумент за повторител. Аргументът повторител може да бъде цяло число или *, за да се повтаря до края на входните данни. За a, A, h, H итерацията указва колко знака от аргумента с данни да се вземат, за @ това е абсолютната позиция, върху която да се поставят следващите данни, за други параметри итерацията указва колко аргумента с данни да се използват и пакетират в резултантния двоичен низ. В момента се изпълняват:
низ с нула
низ със запълване SPACE
h Шестнадесетичен низ, първо по-малката цифра
H Шестнадесетичен низ, първо висок ред
c знак char
C неподписан символ
s късо със знак (винаги 16 бита, естествен ред на байтовете)
S unsigned short (винаги 16 бита, машинен ред на байтовете)
n unsigned short (винаги 16 бита, голям ред на байтовете)
v unsigned short (винаги 16 бита, ред на байтовете от малък ред)
цяло число със знак (машинно зависим размер и ред на байтовете)
I неподписано цяло число (машинно зависим размер и ред на байтовете)
l дълго със знак (винаги 32 бита, машинен ред на байтовете)
L дълго без знак (винаги 32 бита, естествен ред на байтовете)
N дълго без знак (винаги 32 бита, байтголям порядък на края)
V unsigned long (винаги 32 бита, ред на байтовете от малък ред)
f float (размер и представяне в зависимост от машината)
d двойно (размер и представяне в зависимост от машината)
X назад един байт
@NUL подплата до абсолютна позиция
Пример 1: низ за форматиране на pack().
Полученият двоичен низ е с дължина 6 байта и съдържа последователността от байтове:
Обърнете внимание, че разликата между стойностите със знак и без знак засяга само функциятаunpack(), докато функциятаpack()дава същите резултати за кодове на формат със знак и без знак.
Обърнете внимание също, че PHP вътрешно съхранява стойностиintegerкато стойности със знак за естествен размер. Ако посочите стойност като цяло число без знак, което е твърде голямо, за да бъде съхранено по този начин, то се преобразува вfloat, често с непредвидими резултати.