php编程:将26位字母进制转换为10进制数字,如何做?
发布网友
发布时间:2022-04-06 04:25
我来回答
共4个回答
热心网友
时间:2022-04-06 05:54
主要是加权法。
10进制结果=∑各位上的值*(进制数^各位权值)
a^b表示a的b次方。
比如你说的26进制
a->1
s->19
d->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,按上面方法权值相加。
你懂的。
热心网友
时间:2022-04-06 07:12
<?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计算权值;
热心网友
时间:2022-04-06 08:47
<?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计算
权值
;
热心网友
时间:2022-04-06 10:38
26位字母进制?
它不是26进制,是不是要转换他们的ASCII码呢?
如果是16进制转10进制的话,使用函数 hexdex 就可以了。