php的62进制转换代码

来源:互联网 发布:淘宝投诉 编辑:程序博客网 时间:2024/05/20 22:38
主要就是字符映射表,另外需要注意,32位的服务器int数据类型只有2^31-1,太大的数字会溢出推荐使用64位的服务器
//62进制转换function convert_62($str,$op="decode"){$mapping=array("0"=>0,"1"=>1,"2"=>2,"3"=>3,"4"=>4,"5"=>5,"6"=>6,"7"=>7,"8"=>8,"9"=>9,"a"=>10,"b"=>11,"c"=>12,"d"=>13,"e"=>14,"f"=>15,"g"=>16,"h"=>17,"i"=>18,"j"=>19,"k"=>20,"l"=>21,"m"=>22,"n"=>23,"o"=>24,"p"=>25,"q"=>26,"r"=>27,"s"=>28,"t"=>29,"u"=>30,"v"=>31,"w"=>32,"x"=>33,"y"=>34,"z"=>35,"A"=>36,"B"=>37,"C"=>38,"D"=>39,"E"=>40,"F"=>41,"G"=>42,"H"=>43,"I"=>44,"J"=>45,"K"=>46,"L"=>47,"M"=>48,"N"=>49,"O"=>50,"P"=>51,"Q"=>52,"R"=>53,"S"=>54,"T"=>55,"U"=>56,"V"=>57,"W"=>58,"X"=>59,"Y"=>60,"Z"=>61);if($op=="decode"){$len=strlen($str);$strarr=str_split($str);$result=0;for($i=0;$i<$len;$i++){$result+=$mapping[$strarr[$i]]*pow(62,($len-1-$i));}return $result;}else {$intvalue=$str;$result_arr=array();while($intvalue/62!=0){array_push($result_arr,array_search($intvalue%62,$mapping));$intvalue=floor($intvalue/62);}$len=count($result_arr);for($i=0;$i<$len;$i++){$rresult.=$result_arr[$i];}$result=strrev($rresult);return $result;}}echo convert_62("5jJhaZ","decode");//echo convert_62(74100,"encode");