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));
    ?>
    
    尝试一下
  • 相关函数

    printf() - 输出格式化字符串
    sprintf() - 返回格式化字符串
    hash() - 生成哈希值
    dechex() - 十进制转换为十六进制