现在的位置: 首页 > 综合 > 正文

获取用于短网址的,62进制的数。

2013年09月20日 ⁄ 综合 ⁄ 共 837字 ⁄ 字号 评论关闭
<?php
//制造62进制的数
function make62num($num){
	if(57731386986<$num) return $num.'';
	$num_arr  = array(56800235584,916132832,14776336,238328,3844,62);
	$str = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
	
	$num_str = '';
	foreach($num_arr as $n){
		if($num>$n)
		{
			$num_idx = intval($num/$n);
			$num = $num % $n;
			$num_str.=$str[$num_idx];
		}else if($num_str!='') $num_str.='0';
	}
	return $num_str.$str[$num];
}
//还原62进制的数
function get62num($num){
	$str = '0123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM';
	$len = strlen($num);
	$rtn = 0;
	while($len>0){
		$cur = substr($num,0,1);
		$idx = strpos($str, $cur);
		$rtn += pow(62,$len-1)*$idx;
		$num = substr($num,1);
		$len = strlen($num);
	}
	return $rtn;
}
for($i=0;$i<50;$i++){
	$num = rand(1,57731386986);
	$num1 = make62num($num);
	
	$rnum = get62num($num1);
	echo $num.'=>'.$num1.chr(10).$rnum.chr(10).'--------------'.chr(10);
}

 

我的QQ群:

PHPer&Webgame&移动开发,群号:95303036

 

抱歉!评论已关闭.