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_