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)
La cadena binaria resultante tendrá 6 bytes de longitud y contendrá
la secuencia de bytes 0x12, 0x34, 0x78, 0x56, 0x41, 0x42.
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.