1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/strings/functions/crc32.xml
Sergey Panteleev 6d43fd64d7 Исправление форматирования
[skip-spellcheck]
[skip-lint]
2022-12-27 03:42:36 +03:00

136 lines
5.6 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?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
-->