php 26位字母转换成数字

比如说A=1 b=2 aa=27 求代码
能通过getnum(a)获得数值。
也就是传说中的26进制字母转换成数字。

第1个回答  2012-04-11
<?php
$str="aa";//写你想要算的字符串;
$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);
?>

aa,刚好就是27.你试试吧追问

不要复印纸别人答案,这种代码不好调用

追答

都到这种程度了,你还要怎么调用啊?
无非是改个input框,加个button按钮。或者把它写成一个函数,你没看到最后一句getv()吗?将它改成一个函数是非常容易的事情。

追问

真正写入数据的是echo $v; 不是echo getv($str);
echo getv($str);应该改成getv($str);
你这种代码不好调用,要调用时必须把代码加入
echo $v;
//代码
}
这个地方,如果在getv($str);下面写上echo $v;是根本无法写出数据的,都跟你说了不要复制别人代码,你有没有认真研究过这段代码。

追答

晕啊,你等下!

第2个回答  2012-04-12
嗯 方法都应该是返回 不应该直接输出 这样没法调用的
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;
}
return $v;
}

改成return
第3个回答  2021-06-08
private function getv($abc){
$ten = 0;
$len = strlen($abc);
for($i=1;$i<=$len;$i++){
$char = substr($abc,0-$i,1);//反向获取单个字符
$int = ord($char);
$ten += ($int-64)*pow(26,$i-1);
}
return $ten;
}
第4个回答  2012-04-12
ord()返回字符的ascii码值
第5个回答  推荐于2018-03-01
function getalphnum($char){
$array=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
$len=strlen($char);
for($i=0;$i<$len;$i++){
$index=array_search($char[$i],$array);
$sum+=($index+1)*pow(26,$len-$i-1);
}
return $sum;
}

echo getalphnum('ca');

简单,就跟2进制换算成10进制差不多

参考资料:第一php网 php算法

本回答被提问者和网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网