1
0
mirror of https://github.com/php/doc-fr.git synced 2026-04-27 16:53:36 +02:00
Files
2026-03-10 19:04:42 +01:00

147 lines
4.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: e095023e408c8cb6378ae16bb6870343a3946919 Maintainer: yannick Status: ready -->
<!-- Reviewed: yes -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.crc32">
<refnamediv>
<refname>crc32</refname>
<refpurpose>Calcule la somme de contrôle CRC32</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>int</type><methodname>crc32</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
</methodsynopsis>
<para>
Génère la somme de contrôle cyclique CRC32, calculée sur 32 bits, et
appliquée à la chaîne <parameter>string</parameter>. Cette fonction est
généralement utilisée pour valider l'intégrité de données durant une
transmission.
</para>
<warning>
<simpara>
En raison du fait que le type entier de PHP est signé,
la plupart des sommes de contrôle crc32 se trouvent être des
entiers négatifs sur les plateformes 32bits. Sur des installations
64bits, tous les résultats de la fonction <function>crc32</function>
seront des entiers positifs.
</simpara>
<simpara>
Aussi, il faut utiliser le formateur "%u" de la fonction
<function>sprintf</function> ou de la fonction <function>printf</function>
pour récupérer une représentation en chaîne de caractères de la somme
de contrôle non-signée de la fonction <function>crc32</function>
au format décimal.
</simpara>
<simpara>
Pour une représentation hexadécimale de la somme de contrôle, il est possible de
utiliser soit le formateur "%x" de la fonction <function>sprintf</function>
ou de la fonction <function>printf</function> , ou bien les fonctions de
conversion <function>dechex</function>, les deux solutions prennent soin
de convertir le résultat de la fonction <function>crc32</function>
en un entier non-signé.
</simpara>
<simpara>
Faire en sorte que les installations 64bits retournent aussi des entiers
négatifs pour les valeurs de résultat élevées a été envisagé, mais cela
casserait la conversion hexadécimale car les valeurs négatives auraient
un décalage supplémentaire de 0xFFFFFFFF########. Étant donné que la
représentation hexadécimale semble être le cas d'utilisation le plus
courant, nous avons décidé de ne pas la casser même si cela casse
directement la comparaison décimale dans environ 50% des cas lors d'un
passage de 32 à 64bits.
</simpara>
<simpara>
Avec du recul, le fait que la fonction retourne un entier n'était peut-être
pas la meilleure idée, et retourner dès le début une représentation hexadécimale
sous la forme d'une chaîne de caractères (tel que le fait la fonction
<function>md5</function>), aurait été une meilleure solution.
</simpara>
<simpara>
Pour une solution plus pérenne, il est possible de se retourner vers la fonction
générique <function>hash</function>. <code>hash("crc32b", $str)</code>
va retourner la même chaîne de caractères que <code>str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)</code>.
</simpara>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
Les données.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Retourne la somme de contrôle crc32 de la chaîne
<parameter>string</parameter>, sous la forme d'un entier.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Afficher une somme de contrôle CRC32</title>
<para>
Cet exemple illustre comment afficher la somme de contrôle
avec la fonction <function>printf</function> :
</para>
<programlisting role="php">
<![CDATA[
<?php
$checksum = crc32("Le vif zéphyr jubile sur les kumquats du clown gracieux.");
printf("%u\n", $checksum);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>hash</function></member>
<member><function>md5</function></member>
<member><function>sha1</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->