(PHP 4 >= 4.0.1, PHP 5, PHP 7)
crc32 — Вычисляет полином CRC32 для строки
Описание
int crc32 ( string $str )
Функция вычисляет циклический избыточный код 32-битных полиномов (CRC32) для строки str
. Это обычно используется для контроля целостности передаваемых данных.
В PHP целые числа имеют знак, поэтому многие контрольные суммы могут оказаться отрицательными на 32-битных платформах. На 64-битных платформах все результаты crc32() будут положительными целыми.
Поэтому вам нужно использовать формат «%u» в функциях sprintf() или printf() для получения строкового представления суммы crc32() без знака.
Для шестнадцетиричного представления суммы вы можете использовать или формат «%x» в функциях sprintf() и printf(), или же функцию конвертации dechex(). Оба этих способа также позаботятся о конвертации результата crc32() в безнаковое целое.
При использовании 64-битных платформ также рассматривалась возможность возвращать отрицательные целые для больших значений, но это ломало шестнадцетиричное представление, добавляя дополнительные 0xFFFFFFFF######## смещения для них. Так как шестнадцатеричное представление является самым востребованным, было решено не ломать его, даже если это ломает прямое сравнение десятиричных значений в 50% случаев при переходе с 32-битных на 64-битные платформы.
Оглядываясь назад, возможно возвращать целое число было не самой лучшей идеей и лучше было возвращать сразу шестнадцетиричное представление (как например делает md5()).
Можно воспользоваться также более общим решением с использованием функции hash(). hash("crc32b", $str)
вернет ту же строку, что и
str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT).
Список параметров
str
-
Данные.
Возвращаемые значения
Возвращает контрольную сумму crc32 строки str
в виде целого числа.
Примеры
Пример #1 Вывод контрольной суммы CRC32
Этот пример иллюстрирует вывод вычисленной контрольной суммы с помощью функции printf():
<?php $checksum = crc32("The quick brown fox jumped over the lazy dog."); printf("%u\n", $checksum); ?>