php 26进制转10进制,PHP 10进制转62进制

先解释一下,为什么会出现这种“奇怪的”进制,其实是一种缩短原文字符长度的算法,比如应用到网页短地址中或者将手机号缩短存储等等。

62是由0-9,a-z,A-Z: 10+26+26 == 62,所以缩短的字符串最终只会出现这些字符

/**

* 十进制数转换成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;

}

例如有些业务需要将手机号码缩短长度,就可以把手机号转成62进制

// 手机号转进制后缩短长度

echo "get_char:".from10_to62(150888888888)."
";

// 把62进制数转回手机号

echo "get_num:".from62_to10('2EHwoQg')."
";

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值