(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)
crc32 — Обчислює CRC32-поліном для рядка
Функція обчислює циклічний надлишковий код 32-бітних поліномів
для рядка string
. Зазвичай використовується
для перевірки цілісності передачі даних.
Оскільки в 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)
.
string
Дані.
Повертає контрольну суму CRC32-рядка string
у вигляді цілого числа.
Приклад #1 Відображення контрольної суми CRC32
Цей приклад показує вивід контрольної суми за допомогою функції printf():
<?php
$checksum = crc32("І чорна корова біле молоко дає.");
printf("%u\n", $checksum);
// $checksum поверне 1401500516
?>