Documentación offline PHP master

unpack

master Ver versión oficial en línea Licencia CC-BY-3.0Descargado el 2026-08-02

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 de 1 para cada elemento.

Ejemplo con unpack con claves no nombradas

```

```

El ejemplo anterior mostrará:

array(2) {
  [1]=>
  int(160)
  [2]=>
  int(66)
}

Observe que el primer valor desde el especificador c es sobrescrito por el primer valor desde el especificador n.

Véase también#

pack