<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/ref.strings.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'pt_BR',
  ),
  'this' => 
  array (
    0 => 'function.crc32.php',
    1 => 'crc32',
    2 => 'Calcula polin&ocirc;mio crc32 de uma string',
  ),
  'up' => 
  array (
    0 => 'ref.strings.php',
    1 => 'Fun&ccedil;&otilde;es de String',
  ),
  'prev' => 
  array (
    0 => 'function.count-chars.php',
    1 => 'count_chars',
  ),
  'next' => 
  array (
    0 => 'function.crypt.php',
    1 => 'crypt',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'pt_BR',
    'path' => 'reference/strings/functions/crc32.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="function.crc32" class="refentry">
 <div class="refnamediv">
  <h1 class="refname">crc32</h1>
  <p class="verinfo">(PHP 4 &gt;= 4.0.1, PHP 5, PHP 7, PHP 8)</p><p class="refpurpose"><span class="refname">crc32</span> &mdash; <span class="dc-title">Calcula polinômio crc32 de uma string</span></p>

 </div>

 <div class="refsect1 description" id="refsect1-function.crc32-description">
  <h3 class="title">Descrição</h3>
  <div class="methodsynopsis dc-description">
   <span class="methodname"><strong>crc32</strong></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="type"><a href="language.types.integer.php" class="type int">int</a></span></div>

  <p class="para rdfs-comment">
   Gera a soma de verificação de redundância cíclica de 32-bits
   de comprimento da <code class="parameter">string</code>. É usado geralmente
   para validar a integridade de um dado sendo transferido.
  </p>
  <div class="warning"><strong class="warning">Aviso</strong>
   <p class="simpara">
    Pelo fato do tipo inteiro do PHP ser com sinal, muitas somas de verificação crc32
    resultarão em inteiros negativos em plataformas de 32 bits. Em instalações de 64 bits
    todos os resultados de <span class="function"><strong>crc32()</strong></span> serão inteiros positivos.
   </p>
   <p class="simpara">
    Por isso, é necessário usar o formatador &quot;%u&quot; da função <span class="function"><a href="function.sprintf.php" class="function">sprintf()</a></span> ou
    <span class="function"><a href="function.printf.php" class="function">printf()</a></span> para obter a representação em string da
    soma de verificação sem sinal da função <span class="function"><strong>crc32()</strong></span> em formato decimal.
   </p>
   <p class="simpara">
    Para uma representação hexadecimal da soma de verificação, pode-se usar tanto
    o formatador &quot;%x&quot; de <span class="function"><a href="function.sprintf.php" class="function">sprintf()</a></span> ou <span class="function"><a href="function.printf.php" class="function">printf()</a></span>
    quanto as funções de conversão <span class="function"><a href="function.dechex.php" class="function">dechex()</a></span>, ambas destas soluções
    também tomam o cuidado de converter o resultado de <span class="function"><strong>crc32()</strong></span> para um
    inteiro sem sinal.
   </p>
   <p class="simpara">
    Foi considerado que instalações de 64 bits também retornassem inteiros negativos para
    valores mais altos de resultados, porém isto iria quebrar a conversão para hexadecimal,
    já que os negativos teriam um deslocamento extra de 0xFFFFFFFF######## neste caso. Como
    a representação hexadecimal parece ser o uso de caso mais comum, decidiu-se
    não quebrar esta conversão mesmo que ela quebre comparações diretas em decimal
    em aproximadamente 50% dos casos ao mover de 32 para 64 bits.
   </p>
   <p class="simpara">
    Em retrospecto, fazer com que a função retornasse um inteiro talvez não tenha sido a
    melhor ideia, e retornar uma representação hexadecimal em string diretamente (como, por
    exemplo, a função <span class="function"><a href="function.md5.php" class="function">md5()</a></span> faz) poderia ter sido um plano melhor para
    se começar.
   </p>
   <p class="simpara">
    Para uma solução mais portável, pode-se considerar a função genérica
    <span class="function"><a href="function.hash.php" class="function">hash()</a></span>. <code class="code">hash(&quot;crc32b&quot;, $str)</code> retornará
    a mesma string que <code class="code">str_pad(dechex(crc32($str)), 8, &#039;0&#039;, STR_PAD_LEFT)</code>.
   </p>
  </div>
 </div>


 <div class="refsect1 parameters" id="refsect1-function.crc32-parameters">
  <h3 class="title">Parâmetros</h3>
  <p class="para">
   <dl>
    
     <dt><code class="parameter">string</code></dt>
     <dd>
      <p class="para">
       Os dados.
      </p>
     </dd>
    
   </dl>
  </p>
 </div>


 <div class="refsect1 returnvalues" id="refsect1-function.crc32-returnvalues">
  <h3 class="title">Valor Retornado</h3>
  <p class="para">
   Retorna a soma de verificação crc32 da <code class="parameter">string</code> como um inteiro.
  </p>
 </div>


 <div class="refsect1 examples" id="refsect1-function.crc32-examples">
  <h3 class="title">Exemplos</h3>
   <p class="para">
    <div class="example" id="example-1">
     <p><strong>Exemplo #1 Mostrando uma soma de verificação crc32</strong></p>
    <div class="example-contents"><p>
     Este exemplo mostra como exibir uma soma de verificação convertida com a função
     <span class="function"><a href="function.printf.php" class="function">printf()</a></span>:
    </p></div>
      <div class="example-contents">
<div class="annotation-interactive phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$checksum </span><span style="color: #007700">= </span><span style="color: #0000BB">crc32</span><span style="color: #007700">(</span><span style="color: #DD0000">"The quick brown fox jumped over the lazy dog."</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">printf</span><span style="color: #007700">(</span><span style="color: #DD0000">"%u\n"</span><span style="color: #007700">, </span><span style="color: #0000BB">$checksum</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

  </div>
  </p>
 </div>


 <div class="refsect1 seealso" id="refsect1-function.crc32-seealso">
  <h3 class="title">Veja Também</h3>
  <p class="para">
   <ul class="simplelist">
    <li><span class="function"><a href="function.hash.php" class="function" rel="rdfs-seeAlso">hash()</a> - Gera um valor hash (resumo da mensagem)</span></li>
    <li><span class="function"><a href="function.md5.php" class="function" rel="rdfs-seeAlso">md5()</a> - Calculata o hash md5 de uma string</span></li>
    <li><span class="function"><a href="function.sha1.php" class="function" rel="rdfs-seeAlso">sha1()</a> - Calcula o hash SHA1 de uma string</span></li>
   </ul>
  </p>
 </div>


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