1
0
mirror of https://github.com/php/doc-uk.git synced 2026-04-27 08:48:02 +02:00
Files
2024-11-08 08:20:02 +00:00

140 lines
5.6 KiB
XML
Raw Permalink 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: iSensetivity 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-бітних поліномів
для рядка <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">
<![CDATA[
<?php
$checksum = crc32("І чорна корова біле молоко дає.");
printf("%u\n", $checksum);
// $checksum поверне 1401500516
?>
]]>
</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
-->