获取用来短网址的,62进制的数
获取用于短网址的,62进制的数。
<?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); }