您的位置:首页 > 其它

进制转换问题---例如把26进制转为10进制

2017-06-03 15:35 295 查看
问题:a-z表示0-25,代表26进制,现在要求把该26进制转为10进制
 
例如:

输入:ba
输出:26




先看如何把十六进制怎么转换成十进制 

它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0
那么任何进制的数都一样,例如16进制数8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出来的值就是这个数对应的十进制数
又例如k进制数abcdef(这是一个6位数)
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0

这样想就十分简单了



十六进制怎么转换成十进制 

一个数的每一位都有一个权值,例如十进制数2039

它可以表示为:2*10^3+0*10^2+3*10^1+9*10^0
那么任何进制的数都一样,例如16进制数8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出来的值就是这个数对应的十进制数
又例如k进制数abcdef(这是一个6位数)
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0

这样想就十分简单了

给个题目练习下:

package com.hbut.test;

public class Converter {
//	2:题目描述
//
//	用英文字母a-z来分别表示数值0-25, 形成一个26进制的数值表示法。需要你写一个方法,将用a-z表示的26进制数值的字符串,转化为对应的10进制数值。
//	 输入
//	        输入数据有多组,每组占一行,包含多个a-z之间的字符。
//	       样例输入
//	        ba
//	        bcd
//	        gibbon
//	        goodboy
//
//	       输出
//	       所对应表示的10进制数。

public static Long getNum(String s){

Long sum=0L;
for(int i=0;i<s.length();i++){
sum+=(long) ((s.charAt(i)-'a')*Math.pow(26,s.length()-1-i));
}
return sum;

}
public static void main(String[] args) {

System.out.println(getNum("gibbon"));

}

}


输出结果:74962693
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  进制转换