PHP crc32 字符串函数
-
定义和用法
crc32函数计算一个字符串的 crc32 多项式 -
版本支持
PHP4 PHP5 PHP7 V4.0.1(含)+支持 支持 支持 -
语法
crc32 ( string $str )
-
参数
参数 必需的 描述 str 是 要校验的数据。 -
返回值
返回 crc32 校验的整数。注意 由于 PHP 的整数是带符号的,所以在 32 位系统上许多 crc32 校验码将返回负整数。 尽管在 64 位上所有 crc32() 的结果将都是正整数。因此你需要使用sprintf()或printf()的“%u”格式符来获取表示无符号 crc32 校验码的字符串。对于校验和的十六进制表示,您可以使用sprintf()或printf()的“%x”格式化程序或dechex()转换函数,这两者也可以将crc32()结果转换为无符号整数。考虑到64位安装也返回负整数以获得更高的结果值,但是会破坏十六进制转换,因为负数将获得额外的0xFFFFFFFF########移位。 由于十六进制表示似乎是最常见的用例,我们决定不打破这一点,即使它在大约50%的情况下从32位移动到64位时会破坏直接的十进制比较。 回想一下,函数返回一个整数可能不是最好的主意,并立即返回一个十六进制字符串表示(例如md5())可能是一个更好的办法。对于更便携的解决方案,您还可以考虑通用hash()。
hash("crc32b", $str)
将返回与dechex(crc32($str))
相同的字符串。 -
示例
尝试一下<?php $str = "The quick brown fox jumped over the lazy dog."; $checksum = crc32($str); echo $checksum; echo '<br/>'; printf("%u\n", $checksum); echo '<br/>'; echo hash("crc32b",$str); echo "<br/>"; echo dechex(crc32($str)); ?>
-