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

来源:互联网 发布:windows各版本开机音乐 编辑:程序博客网 时间:2024/06/08 03:59
问题: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
原创粉丝点击