Empaqueta los argumentos dados en una cadena binaria siguiendo el formato format. Devuelve la cadena binaria que contiene los datos.
El concepto de esta función fue tomado de Perl y todos los códigos de formateo realizan la misma función. La cadena de formato consiste en códigos de formato seguidos por un argumento opcional de repetición. El argumento de repetición puede ser un valor entero o * para repetir hasta el fin de la entrada de datos. Para a, A, h, H la cuenta de repetición representa cuántos caracteres se toman de un argumento de datos, para @ es la posición absoluta donde poner los datos siguientes, para todo lo demás la cuenta de repetición especifica cuántos argumentos de datos se toman y empaquetan en la cadena binaria resultante. Actualmente están implementados:
a cadena rellena de NUL
A cadena rellena de ESPACIOS
h cadena Hex, primero el medio byte inferior
H cadena Hex, primero el medio byte superior
c signed (con signo) char
C unsigned (sin signo) char
s signed short (siempre 16 bits, distribución de bytes de la máquina)
S unsigned short (siempre 16 bits, distribución de bytes de la máquina)
n unsigned short (siempre 16 bits, distribución de bytes gran endian)
v unsigned short (siempre 16 bits, distribución de bytes pequeño endian)
i signed integer (distribución de bytes y tamaños dependientes de la máquina)
I unsigned integer (distribución de bytes y tamaños dependientes de la máquina)
l signed long (siempre 32 bits, distribución de bytes de la máquina)
L unsigned long (siempre 32 bits, distribución de bytes de la máquina)
N unsigned long (siempre 32 bits, distribución de bytes gran endian)
V unsigned long (siempre 32 bits, distribución de bytes pequeño endian)
f float (representación y tamaño dependientes de la máquina)
d double (representación y tamaño dependientes de la máquina)
x byte NUL
X Un byte hacia atrás
@ relleno con NUL en la posición absoluta
Adviértase que la distinción entre valores signed (con signo) y unsigned (sin signo) sólo afecta a la función unpack(), ya que la función pack() da el mismo resultado para códigos de formato con signo y sin signo.
Nótese también que internamente PHP almacena valores enteros como valores con signo de un tamaño dependiente de la máquina. Si le da un valor entero sin signo demasiado grande para ser almacenado, será convertido a un double (doble), lo que a menudo produce resultados no deseados.