胖蒜

分享有价值的资源

PHP 10进制与62进制互转,可用于生成短网址

1、获取该条记录的自增ID
2、将自增转换为62进制,并拼接网址 如:http://t.cn/w7e
3、用户访问到 http://t.cn/w7e 时,提取短网址后缀 w7e
4、将短网址后缀转换为10进制,得到自增ID号 如:123456
5、使用查询该记录,进行业务逻辑处理(比如跳转)

/**
 * 十进制数转换成62进制
 *
 * @param integer $num
 * @return string
 */
function from10_to62($num) {
    $to = 62;
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $ret = '';
    do {
        $ret = $dict[bcmod($num, $to)] . $ret;
        $num = bcdiv($num, $to);
    } while ($num > 0);
    return $ret;
}
/**
 * 62进制数转换成十进制数
 *
 * @param string $num
 * @return string
 */
function from62_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;
}

本文属原创,转载请注明原文:https://pangsuan.com/p/php-bit-10-to-62.html

感觉很棒,欢迎点赞 OR 打赏~

分享到:

评论 (0)

立即登录评论
马上咨询 在线工单