mirror of
https://github.com/php/doc-ru.git
synced 2026-04-28 09:43:16 +02:00
6d43fd64d7
[skip-spellcheck] [skip-lint]
136 lines
5.6 KiB
XML
136 lines
5.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- EN-Revision: e095023e408c8cb6378ae16bb6870343a3946919 Maintainer: shein Status: ready -->
|
|
<!-- Reviewed: no -->
|
|
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.crc32">
|
|
<refnamediv>
|
|
<refname>crc32</refname>
|
|
<refpurpose>Вычисляет полином 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>
|
|
Функция вычисляет циклический избыточный код 32-битных
|
|
полиномов (CRC32) для строки <parameter>string</parameter>.
|
|
Это обычно используется для контроля целостности передаваемых данных.
|
|
</para>
|
|
<warning>
|
|
<simpara>
|
|
В PHP целые числа имеют знак, поэтому многие контрольные суммы
|
|
могут оказаться отрицательными на 32-битных платформах. На 64-битных
|
|
платформах все результаты <function>crc32</function> будут положительными целыми.
|
|
</simpara>
|
|
<simpara>
|
|
Поэтому вам нужно использовать формат "%u" в функциях <function>sprintf</function> или
|
|
<function>printf</function> для получения строкового представления
|
|
суммы <function>crc32</function> без знака.
|
|
</simpara>
|
|
<simpara>
|
|
Для шестнадцатеричного представления суммы вы можете использовать
|
|
или формат "%x" в функциях <function>sprintf</function> и <function>printf</function>,
|
|
или же функцию конвертации <function>dechex</function>. Оба этих способа также
|
|
позаботятся о конвертации результата <function>crc32</function> в беззнаковое целое.
|
|
</simpara>
|
|
<simpara>
|
|
При использовании 64-битных платформ также рассматривалась возможность
|
|
возвращать отрицательные целые для больших значений, но это ломало
|
|
шестнадцатеричное представление, добавляя дополнительные 0xFFFFFFFF########
|
|
смещения для них. Так как шестнадцатеричное представление является самым востребованным,
|
|
было решено не ломать его, даже если это ломает прямое сравнение десятичных
|
|
значений в 50% случаев при переходе с 32-битных на 64-битные платформы.
|
|
</simpara>
|
|
<simpara>
|
|
Оглядываясь назад, возможно возвращать целое число было не самой лучшей идеей и лучше было
|
|
возвращать сразу шестнадцатеричное представление (как например делает
|
|
<function>md5</function>).
|
|
</simpara>
|
|
<simpara>
|
|
Можно воспользоваться также более общим решением с использованием функции
|
|
<function>hash</function>. <code>hash("crc32b", $str)</code> вернёт
|
|
ту же строку, что и <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>
|
|
Данные.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Возвращает контрольную сумму crc32 строки <parameter>string</parameter> в виде целого числа.
|
|
</para>
|
|
</refsect1>
|
|
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title>Вывод контрольной суммы CRC32</title>
|
|
<para>
|
|
Этот пример иллюстрирует вывод вычисленной контрольной суммы
|
|
с помощью функции <function>printf</function>:
|
|
</para>
|
|
<programlisting role="php">
|
|
<!-- The quick brown fox jumped over the lazy dog - это панграмма, переводить не надо -->
|
|
<![CDATA[
|
|
<?php
|
|
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
|
|
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
|
|
-->
|