<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.misc.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'es',
  ),
  'this' => 
  array (
    0 => 'function.unpack.php',
    1 => 'unpack',
    2 => 'Desempaqueta datos desde una cadena binaria',
  ),
  'up' => 
  array (
    0 => 'ref.misc.php',
    1 => 'Funciones Varias',
  ),
  'prev' => 
  array (
    0 => 'function.uniqid.php',
    1 => 'uniqid',
  ),
  'next' => 
  array (
    0 => 'function.usleep.php',
    1 => 'usleep',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    'path' => 'reference/misc/functions/unpack.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.unpack" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">unpack</h1>
  <p class="verinfo">(PHP 4, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">unpack</span> &mdash; <span class="dc-title">Desempaqueta datos desde una cadena binaria</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.unpack-description">
  <h3 class="title">Descripción</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>unpack</strong></span>(<span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$format</code></span>, <span class="methodparam"><span class="type"><a href="language.types.string.php" class="type string">string</a></span> <code class="parameter">$string</code></span>, <span class="methodparam"><span class="type"><a href="language.types.integer.php" class="type int">int</a></span> <code class="parameter">$offset</code><span class="initializer"> = 0</span></span>): <span class="type"><span class="type"><a href="language.types.array.php" class="type array">array</a></span>|<span class="type"><a href="language.types.singleton.php" class="type false">false</a></span></span></div>

  <p class="para rdfs-comment">
   Desempaqueta los datos <code class="parameter">data</code>
   desde una cadena binaria con el formato <code class="parameter">format</code>.
  </p>
  <p class="para">
   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.
  </p>
  <p class="para">
   Se han realizado modificaciones para alinear el comportamiento
   de esta función con Perl :
   <ul class="simplelist">
    <li>
     El código "a" ya no elimina los bytes NULL finales.
    </li>
    <li>
     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).
    </li>
    <li>
     Se ha añadido el código "Z" para las cadenas rellenas con caracteres
     NULL, y elimina los bytes NULL finales.
    </li>
   </ul>
  </p>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.unpack-parameters">
  <h3 class="title">Parámetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">format</code></dt>
     <dd>
      <p class="para">
       Consulte la función <span class="function"><a href="function.pack.php" class="function">pack()</a></span> para una explicación de los códigos de formato.
      </p>
     </dd>
    
    
     <dt><code class="parameter">string</code></dt>
     <dd>
      <p class="para">
       Los datos empaquetados.
      </p>
     </dd>
    
    
     <dt><code class="parameter">offset</code></dt>
     <dd>
      <p class="para">
       La posición donde comenzar el desempaquetado.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.unpack-returnvalues">
  <h3 class="title">Valores devueltos</h3>
  <p class="para">
   Devuelve un array asociativo que contiene los elementos desempaquetados
   de una cadena binaria,  o <strong><code><a href="reserved.constants.php#constant.false">false</a></code></strong> si ocurre un error.
  </p>
 </div>


 <div class="refsect1 changelog" id="refsect1-function.unpack-changelog">
  <h3 class="title">Historial de cambios</h3>
  <p class="para">
   <table class="doctable informaltable">
    
     <thead>
      <tr>
       <th>Versión</th>
       <th>Descripción</th>
      </tr>

     </thead>

     <tbody class="tbody">
      <tr>
       <td>7.2.0</td>
       <td>
        Los tipos <span class="type"><a href="language.types.float.php" class="type float">float</a></span> y <span class="type"><a href="language.types.float.php" class="type double">double</a></span> soportan tanto la orientación Big Endian como Little Endian.
       </td>
      </tr>

      <tr>
       <td>7.1.0</td>
       <td>
        Se ha añadido el argumento opcional <code class="parameter">offset</code>.
       </td>
      </tr>

     </tbody>
    
   </table>

  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.unpack-examples">
  <h3 class="title">Ejemplos</h3>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Ejemplo #1 Ejemplo con <span class="function"><strong>unpack()</strong></span></strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x04\x00\xa0\x00"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"cchars/nint"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

    <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
    <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Array
(
    [chars] =&gt; 4
    [int] =&gt; 160
)</pre>
</div>
    </div>
   </div>
  </p>

  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Ejemplo #2 Ejemplo con <span class="function"><strong>unpack()</strong></span> y un argumento de repetición</strong></p>
    <div class="example-contents">
 <div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x04\x00\xa0\x00"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"c2chars/nint"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">print_r</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
     <div class="example-contents screen">
<div class="examplescode"><pre class="examplescode">Array
(
    [chars1] =&gt; 4
    [chars2] =&gt; 0
    [int] =&gt; 40960
)</pre>
</div>
     </div>
    </div>
   </p>
  </div>


 <div class="refsect1 notes" id="refsect1-function.unpack-notes">
  <h3 class="title">Notas</h3>
  <div class="caution"><strong class="caution">Precaución</strong>
   <p class="para">
    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 <code class="literal">&quot;no firmado&quot;</code>.
   </p>
  </div>
  <div class="caution"><strong class="caution">Precaución</strong>
   <p class="para">
    Si no se nombra un elemento, se utilizan los índices numéricos a partir de
    <code class="literal">1</code>. 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 <code class="literal">1</code> para cada elemento.
   </p>
   <p class="para">
    <div class="example" id="example-3">
     <p><strong>Ejemplo #3 Ejemplo con <span class="function"><strong>unpack()</strong></span> con claves no nombradas</strong></p>
     <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$binarydata </span><span style="color: #007700">= </span><span style="color: #DD0000">"\x32\x42\x00\xa0"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$array </span><span style="color: #007700">= </span><span style="color: #0000BB">unpack</span><span style="color: #007700">(</span><span style="color: #DD0000">"c2/n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$binarydata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$array</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
     </div>

     <div class="example-contents"><p>El ejemplo anterior mostrará:</p></div>
     <div class="example-contents screen">
<div class="notescode"><pre class="notescode">array(2) {
  [1]=&gt;
  int(160)
  [2]=&gt;
  int(66)
}</pre>
</div>
     </div>
     <div class="example-contents"><p>
      Observe que el primer
      valor desde el especificador <code class="literal">c</code> es sobrescrito
      por el primer valor desde el especificador <code class="literal">n</code>.
     </p></div>
    </div>
   </p>
  </div>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.unpack-seealso">
  <h3 class="title">Ver también</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.pack.php" class="function" rel="rdfs-seeAlso">pack()</a> - Compacta datos en una cadena binaria</span></li>
   </ul>
  </p>
 </div>


</div><?php manual_footer($setup); ?>