unpack
En esta página
unpack
Desempaqueta datos desde una cadena binaria
Descripción#
unpack(string $format, string $string, [int $offset]): array
```php
Desempaqueta los datos `data` desde una cadena binaria con el formato `format`.
Los datos desempaquetados se almacenan en un array. Para ello, debe asignarse un nombre a cada formato utilizado y separarlos con una barra (/). Si se proporciona un argumento de repetición, entonces cada una de las claves del array tendrá un número de secuencia detrás del nombre proporcionado.
Se han realizado modificaciones para alinear el comportamiento de esta función con Perl : El código "a" ya no elimina los bytes NULL finales., El código "A" ahora elimina todos los espacios en blanco ASCII finales (espacio, tabulación, nuevas líneas, retorno de carro, y bytes NULL)., Se ha añadido el código "Z" para las cadenas rellenas con caracteres NULL, y elimina los bytes NULL finales.
## Parámetros
`format`
Consulte la función `pack` para una explicación de los códigos de formato.
`string`
Los datos empaquetados.
`offset`
La posición donde comenzar el desempaquetado.
## Valores devueltos
Devuelve un array asociativo que contiene los elementos desempaquetados de una cadena binaria, o `false` si ocurre un error.
## Historial de cambios
| Versión | Descripción |
|----|----|
| 7.2.0 | Los tipos `float` y `double` soportan tanto la orientación Big Endian como Little Endian. |
| 7.1.0 | Se ha añadido el argumento opcional `offset`. |
## Ejemplos
Ejemplo con `unpack`
El ejemplo anterior mostrará:
Array
(
[chars] => 4
[int] => 160
)
Ejemplo con `unpack` y un argumento de repetición
```php
El ejemplo anterior mostrará:
Array
(
[chars1] => 4
[chars2] => 0
[int] => 40960
)
Notas#
[!CAUTION] Debe tenerse en cuenta que PHP maneja los valores internamente en forma firmada. Si se desempaqueta un valor que es tan grande como el tamaño utilizado internamente por PHP, el resultado será un número negativo, incluso si se ha desempaquetado con la opción
"no firmado".[!CAUTION] Si no se nombra un elemento, se utilizan los índices numéricos a partir de
1. Tenga en cuenta que si tiene más de un elemento sin nombre, algunos datos se sobrescriben porque la numeración se reinicia a partir de1para cada elemento.Ejemplo con
unpackcon claves no nombradas```
```
El ejemplo anterior mostrará:
array(2) { [1]=> int(160) [2]=> int(66) }Observe que el primer valor desde el especificador
ces sobrescrito por el primer valor desde el especificadorn.
Véase también#
pack