PHP实现java的hashCode方法
2017-02-14 15:00
1181 查看
业务提供方数据表分表,使用hashCode
我们不是java系语言,所以要自己转换
以下
function hashCode64($str) {
$str = (string)$str;
$hash = 0;
$len = strlen($str);
if ($len == 0 )
return $hash;
for ($i = 0; $i < $len; $i++) {
$h = $hash << 5;
$h -= $hash;
$h += ord($str[$i]);
$hash = $h;
$hash &= 0xFFFFFFFF;
}
return $hash;
}
function hashCode32( $s )
{
$h = 0;
$len = strlen($s);
for($i = 0; $i < $len; $i++)
{
$h = overflow32(31 * $h + ord($s[$i]));
}
return $h;
}
function overflow32($v)
{
$v = $v % 4294967296;
if ($v > 2147483647) return $v - 4294967296;
elseif ($v < -2147483648) return $v + 4294967296;
else return $v;
}
提供32位,64位两种方法
我们不是java系语言,所以要自己转换
以下
function hashCode64($str) {
$str = (string)$str;
$hash = 0;
$len = strlen($str);
if ($len == 0 )
return $hash;
for ($i = 0; $i < $len; $i++) {
$h = $hash << 5;
$h -= $hash;
$h += ord($str[$i]);
$hash = $h;
$hash &= 0xFFFFFFFF;
}
return $hash;
}
function hashCode32( $s )
{
$h = 0;
$len = strlen($s);
for($i = 0; $i < $len; $i++)
{
$h = overflow32(31 * $h + ord($s[$i]));
}
return $h;
}
function overflow32($v)
{
$v = $v % 4294967296;
if ($v > 2147483647) return $v - 4294967296;
elseif ($v < -2147483648) return $v + 4294967296;
else return $v;
}
提供32位,64位两种方法
相关文章推荐
- 用php实现java的String的hashCode方法
- 如何正确实现Java中的hashCode方法
- php 与java在实现抽象方法上的不同
- php,java实现模板方法模式
- 如何正确的实现Java中的hashCode方法
- java中String类的hashCode方法实现
- java读取PHP接口数据的实现方法
- PHP与Java进行通信的实现方法
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- javascript 实现 java 中String的hashcode方法
- PHP与Java进行通信的实现方法
- PHP与Java进行通信的实现方法
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- 重写Java Object对象的hashCode和equals方法实现集合元素按内容判重
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现
- Java对PHP服务器hmac_sha1签名认证方法的匹配实现 的另一种方式
- Atitit.实现继承的原理and方法java javascript .net c# php ...
- Atitit.实现继承的原理and方法java javascript .net c# php ...
- paip.函数方法回调机制跟java php python c++的实现