27
2013-04-23 10:24:27 +08:00
$a = encode(2147483642);
echo $a, '
';
$b = decode($a);
echo $b;
$time=microtime(1);
for ($i=0;$i<100000;$i++)
hash('md5', 'string');
echo microtime(1)-$time,': hash/md5
';
$time=microtime(1);
for ($i=1;$i<200;$i++) {
$s = encode($i);
//echo $s, '
';
echo decode($s), '
';
}
echo microtime(1)-$time,': jia/jie
';
function encode($id)
{
if ($id > 100) {
$id = (string)$id;
$len = strlen($id) - 1;
$id = $id{0} . $id{$len} . substr($id, 2, -1) . $id{1};
}
$id += 60512868;
$str = base_convert($id, 10, 36);
$l = strlen($str);
$str = substr($str, 0, $l - 2) . xchange(substr($str, -2, 1)) . xchange(substr($str, -1));
return $str;
}
function decode($str)
{
$l = strlen($str);
$str = substr($str, 0, $l - 2) . xchange(substr($str, -2, 1), 1) . xchange(substr($str, -1), 1);
$id = base_convert($str, 36, 10);
$id -= 60512868;
if ($id > 100) {
$id = (string)$id;
$len = strlen($id) - 1;
return $id{0} . $id{$len} . substr($id, 2, -1) . $id{1};
} else {
return $id;
}
}
function xchange($s, $decode = 0)
{
if ($decode) {
$str = "ytuvsrqzxwilng7fed2cbajk1096h53m8o4p";
} else {
$str = "poiuytrewqlkjhgfdsamnbvcxz6541239807";
}
$s = base_convert($s, 36, 10);
return $str{$s};
}
?>