版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/buyueliuying/article/details/89944953
10进制转62进制
public static function to62($num)
{
$to = 62;
$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$ret = '';
do {
$ret = $dict[bcmod($num, $to)] . $ret; //bcmod取得高精确度数字的余数。
$num = bcdiv($num, $to); //bcdiv将二个高精确度数字相除。
} while ($num > 0);
return $ret;
}
62进制转10进制
public static function to10($num)
{
$from = 62;
$num = strval($num);
$dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$len = strlen($num);
$dec = 0;
for($i = 0; $i < $len; $i++) {
$pos = strpos($dict, $num[$i]);
$dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec);
}
return $dec;
}