php计算一个字符串的32位CRC的函数crc32()

黄舟
发布: 2017-11-02 10:24:04
原创
2744人浏览过

实例

输出 crc32() 的结果:

<?php
$str = crc32("Hello World!");
printf("%un",$str);
?>
登录后复制

定义和用法

crc32() 函数计算一个字符串的 32 位 CRC(循环冗余校验)。

该函数可用于验证数据的完整性。

提示:为确保您能从 crc32() 函数中取得正确的字符串表示,您必须使用 printf() 或 sprintf() 函数的 %u 格式符。如果未使用 %u 格式符,结果可能会显示为不正确的数字或者负数。

语法

crc32(string)
登录后复制

参数        描述

立即学习PHP免费学习笔记(深入)”;

string     必需。规定要计算的字符串。    

技术细节

返回值:           以整数形式返回 string 的 32 位循环冗余校验码多项式。    

PHP 版本:       4.0.1+    

实例 1

在本实例中,我们将在使用以及不使用 "%u" 格式符的情况下,输出 crc32() 的结果(注意结果是相同的):

<?php
$str = crc32("Hello world!");
echo 'Without %u: '.$str."<br>";
echo 'With %u: ';
printf("%u",$str);
?>
登录后复制

上面的代码将输出:

Without %u: 461707669
With %u: 461707669
登录后复制

实例 2

在本实例中,我们将在使用以及不使用 "%u" 格式符的情况下,输出 crc32() 的结果(注意结果是不相同的):

<?php
$str = crc32("Hello world.");
echo 'Without %u: '.$str."<br>";
echo 'With %u: ';
printf("%u",$str);
?>
登录后复制

上面的代码将输出:

Without %u: -1959132156
With %u: 2335835140
登录后复制

crc32返回的结果在32位机上会产生溢出,所以结果可能为负数。而在64位机上不会溢出,所以总是正值。

CRC算法是按字长位数bit进行计算的。

crc32函数会按照php中的两个常量参考计算 PHP_INT_SIZE,PHP_INT_MAX
这两个常量的定义:
整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。PHP 不支持无符号整数。Integer值的字长可以用常量PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量PHP_INT_MAX来表示。
输出下32位中PHP_INT_SIZE:4,PHP_INT_MAX:2147483647
输出下64位中PHP_INT_SIZE:8,PHP_INT_MAX:9223372036854775807

以上就是php计算一个字符串的32位CRC的函数crc32() 的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号