crc32

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

crc32Обчислює CRC32-поліном для рядка

Опис

crc32(string $string): int

Функція обчислює циклічний надлишковий код 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
?>

Прогляньте також

  • hash() - Generate a hash value (message digest)
  • md5() - Обчислює MD5-хеш рядка
  • sha1() - Обчислює SHA1-хеш рядка