Empaquetar los argumentas dados en una cadena binaria de acuerdo a formato. Devuelve la cadena binaria que contiene los datos.
La idea de esta funci贸n fue tomada de Perl y todos los c贸digos de formato funcionan igual que en aqu茅l lenguaje, sin embargo, existen algunos c贸digos de formato faltantes, como el c贸digo "u" de Perl. La cadena de formato consiste de c贸digos de formato seguidos por un argumento opcional de repetici贸n. El argumento de repetici贸n puede ser un valor entero o * para la repetici贸n hasta el final de los datos de entrada. En el caso de a, A, h, y H el conteo de repetici贸n especifica cu谩ntos caracteres de un argumento de datos son tomados, para @ es la posici贸n absoluta en d贸nde colocar el siguiente dato, para todos los dem谩s el conteo de repetici贸n especifica cu谩ntos argumentos de datos son consumidos y empaquetados en la cadena binaria resultante. Actualmente se han implementado los siguientes
Tabla 1. Caracteres de formato de pack()
| C贸digo | Descripci贸n |
|---|---|
| a | cadena completada con caracteres NUL |
| A | cadena completada con espacios |
| h | cadena Hex, nibble bajo primero |
| H | cadena Hex, nibble alto primero |
| c | caracter con signo |
| C | caracter sin signo |
| s | short con signo (siempre de 16 bits, orden de bytes de m谩quina) |
| S | short sin signo (siempre de 16 bits, orden de bytes de m谩quina) |
| n | short sin signo (siempre de 16 bits, byte m谩s significativo primero) |
| v | short sin signo (siempre de 16 bits, byte menos significativo primero) |
| i | entero con signo (tama帽o y orden de bytes dependiente de la m谩quina) |
| I | entero sin signo (tama帽o y orden de bytes dependiente de la m谩quina) |
| l | long con signo (siempre de 32 bits, orden de bytes de m谩quina) |
| L | long sin signo (siempre de 32 bits, orden de bytes de m谩quina) |
| N | long sin signo (siempre de 32 bits, byte m谩s significativo primero) |
| V | long sin signo (siempre de 32 bits, byte menos significativo primero) |
| f | flotante (tama帽o y representaci贸n dependiente de la m谩quina) |
| d | doble (tama帽o y representaci贸n dependiente de la m谩quina) |
| x | byte NUL |
| X | Copiar un byte |
| @ | relleno de NUL hasta una posici贸n absoluta |
Note que la distinci贸n entre valores con signo y sin signo s贸lo afecta a la funci贸n unpack(), mientras que la funci贸n pack() entrega el mismo resultado para c贸digos de formato con signo y sin signo.
Tambi茅n note que PHP almacena valores integer internamente como valores con signo de un tama帽o dependiente de la m谩quina. Si le entrega un valor entero sin signo demasiado largo para ser almacenado en esa forma, es convertido a un valor float, lo cual frecuentemente produce un resultado inesperado.
Vea tambi茅n unpack().