php编程:将26位字母进制转换为10进制数字,如何做?
将26位字母进制转换为10进制数字,如何做?比如把asdfggghe这个个26进制的数,如何转为10进制的数字...
将26位字母进制转换为10进制数字,如何做?
比如把 asdfggghe 这个个26进制的数,如何转为10进制的数字 展开
比如把 asdfggghe 这个个26进制的数,如何转为10进制的数字 展开
4个回答
展开全部
主要是加权法。
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,按上面方法权值相加。
你懂的。
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,按上面方法权值相加。
你懂的。
展开全部
<?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计算权值;
$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;
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计算
权值
;
$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计算
权值
;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
26位字母进制?
它不是26进制,是不是要转换他们的ASCII码呢?
如果是16进制转10进制的话,使用函数 hexdex 就可以了。
它不是26进制,是不是要转换他们的ASCII码呢?
如果是16进制转10进制的话,使用函数 hexdex 就可以了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询