主要是加权法。10进制结果=∑各位上的值*(进制数^各位权值)a^b表示a的b次方。比如你说的26进制a->1s->19d->4那么asd=1*(26^2)+19*(26^1)+4*(26^0)=1174(10进制)如果是8进制数456=4*(8^2)+5*(8^2)+6*(8^0)=302(10进制)分太少,不写源程序了,建立索引数组$arr[a]=1$,arr[b]=2..再把输入的字母拆成单字符倒序数组使得$single[2]=a,$single[1]=s,$single[0]=d,按上面方法权值相加。你懂的。
<?php$str="abcdefg";//写你想要算的字符串;$v;function getv($s){ $arr=str_split($s,1); for ($i=0;$i<strlen($s);$i++) { $v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v; } echo $v;}function getw($w){ $x=1; for ($i=0;$i<$w;$i++){ $x=26*$x; } return $x;}function gett($ch){ return (ord($ch)-96);}echo getv($str);?> 虽然不难,但是麻烦.这题没意思; 注:getv计算总结果; gett计算字母代表的数字; getw计算权值;
<?php$str="abcdefg";//写你想要算的字符串;$v;functiongetv($s){$arr=str_split($s,1);for($i=0;$i<strlen($s);$i++){$v=gett($arr[$i])*getw(strlen($s)-$i-1)+$v;}echo$v;}functiongetw($w){$x=1;for($i=0;$i<$w;$i++){$x=26*$x;}return$x;}functiongett($ch){return(ord($ch)-96);}echogetv($str);?>虽然不难,但是麻烦.这题没意思;注:getv计算总结果;gett计算字母代表的数字;getw计算权值;