# crc32

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

crc32 — 计算一个字符串的 crc32 多项式

### 说明

crc32(string `$string`): int

生成 `string` 的 32 位循环冗余校验和多项式。这通常用于检查正在传输的数据是否完整。

警告

由于 PHP 的整数类型是有符号的，所以在 32 位系统上许多 crc32 校验和将产生负整数。不过在 64 位上所有 crc32() 的结果将都是正整数。

因此需要使用 sprintf() 或 printf() 的“%u”格式标志符获取十进制格式的无符号 crc32 校验和的字符串表示形式。

对于十六进制的校验和可以使用 sprintf() 或 printf() 的“%x”格式标志符或 dechex() 转换程序，这两个函数负责将 crc32() 结果转为无符号整数。

64 位的设备也会返回负数，更高的结果值会破坏十六进制转换，因为负数会得到额外的 0xFFFFFFFF######## 偏移量。由于十六进制似乎是最常见的用例，所以决定不破坏该原则，即使从 32 位移动到 64 位时破坏了大约 50% 的十进制直接比较。

回想一下，让函数返回整数可能不是最好的主意，而立即返回十六进制的字符串（例如 md5()）可能是更好的开始。

可移植方案可以考虑通用的 hash()。`hash("crc32b", $str)` 返回跟 `str_pad(dechex(crc32($str)), 8, '0', STR_PAD_LEFT)` 相同的字符串。

### 参数

`string`

  要校验的数据。

### 返回值

以整数形式返回 `string` 的 crc32 校验和。

### 示例

示例 #1 显示 crc32 校验和

示例中演示了如何使用 printf() 函数打印转换后的校验和：

`<?php
$checksum = crc32("The quick brown fox jumped over the lazy dog.");
printf("%u\n", $checksum);
?>`

### 参见

- hash() - 生成散列值（消息摘要）
- md5() - 计算字符串的 MD5 散列值
- sha1() - 计算字符串的 sha1 散列值

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open