PHP Hash算法:Times33算法代码实例
PHP中的Hash算法:Times33算法代码实例
在PHP的Hash算法时,Times33算法引起了我的兴趣。今天,我将分享一个Times33算法的代码实例,希望能帮助对此感兴趣的朋友们。
让我们理解一下什么是Times33算法。其核心思想在于通过一个固定的数值(这里是33)对字符串的每个字符进行处理,并累加得到一个哈希值。
下面是Times33算法的代码实现:
```php
/
CRC32 Hash function
@param $str
@return int
/
function hash32($str)
{
return crc32($str) >> 16 & 0x7FFFFFFF;
}
/
Times33 Hash function
@param $str
@return int
/
function hash33($str)
{
$hash = 0;
for($i=0; $i $hash += 33 $hash + ord($str{$i}); } return $hash & 0x7FFFFFFF; } // 测试用例 $n = 10; $stat = array(); // Test Case 1 使用CRC32算法 for($i=0; $i<10000; $i++){ $str = substr(md5(microtime(true)), 0, 8); $p = hash32($str) % $n; if(isset($stat[$p])){ $stat[$p]++; }else{ $stat[$p] = 1; } } print_r($stat); // Test Case 2 使用Times33算法 for($i=0; $i<10000; $i++){ $str = substr(md5(microtime(true)), 0, 8); $p = hash33($str) % $n; if(isset($stat[$p])){ $stat[$p]++; }else{ $stat[$p] = 1; } } print_r($stat); ?> ``` 这段代码中包含了两个测试用例,分别使用了CRC32和Times33算法。测试结果展示了两种算法的分布效果,以及它们的性能差异。值得注意的是,尽管数据源可能影响到结果的分布,但Times33算法仍然表现出良好的性能。数字33的选择是因为它是素数和奇数,有助于确保哈希的均匀分布。PHP内置的Hash函数有时会使用类似5381这样的数值。Times33算法提供了一种简单而有效的哈希方法。通过这段代码,希望能帮助你更好地理解这一算法的工作原理。
编程语言
- PHP Hash算法:Times33算法代码实例
- PHP如何防止用户重复提交表单
- windows7下安装php的php-ssh2扩展教程
- PHP二进制与字符串之间的相互转换教程
- Yii实现多按钮保存与提交的方法
- Apache启动报错No space left on device- AH00023该怎么解决
- JSP 导出Excel表格的实例
- 网页中英文混排行高不等问题的解决方法
- PHPExcel 修改已存在Excel的方法
- sql server利用不同语种语言显示报错错误消息的方
- sqlserver 因为选定的用户拥有对象,所以无法除去
- jQuery弹出div层过2秒自动消失
- javascript fckeditor编辑器取值与赋值实现代码
- 正则表达式解二元方程式代码
- 万万没想到Chrome的历史记录竟然可以这么玩
- 让IE8和IE9支持eWebEditor在线编辑器的方法