进制转换问题---例如把26进制转为10进制
生活随笔
收集整理的這篇文章主要介紹了
进制转换问题---例如把26进制转为10进制
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題:a-z表示0-25,代表26進(jìn)制,現(xiàn)在要求把該26進(jìn)制轉(zhuǎn)為10進(jìn)制
?
例如:
輸入:ba 輸出:26
它可以表示為:2*10^3+0*10^2+3*10^1+9*10^0
那么任何進(jìn)制的數(shù)都一樣,例如16進(jìn)制數(shù)8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出來(lái)的值就是這個(gè)數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)
又例如k進(jìn)制數(shù)abcdef(這是一個(gè)6位數(shù))
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0
這樣想就十分簡(jiǎn)單了
它可以表示為:2*10^3+0*10^2+3*10^1+9*10^0
那么任何進(jìn)制的數(shù)都一樣,例如16進(jìn)制數(shù)8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出來(lái)的值就是這個(gè)數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)
又例如k進(jìn)制數(shù)abcdef(這是一個(gè)6位數(shù))
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0
這樣想就十分簡(jiǎn)單了 給個(gè)題目練習(xí)下: package com.hbut.test;public class Converter {// 2:題目描述// // 用英文字母a-z來(lái)分別表示數(shù)值0-25, 形成一個(gè)26進(jìn)制的數(shù)值表示法。需要你寫(xiě)一個(gè)方法,將用a-z表示的26進(jìn)制數(shù)值的字符串,轉(zhuǎn)化為對(duì)應(yīng)的10進(jìn)制數(shù)值。// 輸入// 輸入數(shù)據(jù)有多組,每組占一行,包含多個(gè)a-z之間的字符。// 樣例輸入// ba// bcd// gibbon// goodboy// // 輸出// 所對(duì)應(yīng)表示的10進(jìn)制數(shù)。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"));}}
輸出結(jié)果:74962693
輸入:ba 輸出:26
先看如何把十六進(jìn)制怎么轉(zhuǎn)換成十進(jìn)制?
它可以表示為:2*10^3+0*10^2+3*10^1+9*10^0
那么任何進(jìn)制的數(shù)都一樣,例如16進(jìn)制數(shù)8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出來(lái)的值就是這個(gè)數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)
又例如k進(jìn)制數(shù)abcdef(這是一個(gè)6位數(shù))
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0
這樣想就十分簡(jiǎn)單了
十六進(jìn)制怎么轉(zhuǎn)換成十進(jìn)制?
一個(gè)數(shù)的每一位都有一個(gè)權(quán)值,例如十進(jìn)制數(shù)2039它可以表示為:2*10^3+0*10^2+3*10^1+9*10^0
那么任何進(jìn)制的數(shù)都一樣,例如16進(jìn)制數(shù)8A30E
它就是8*16^4+10*16^3+3*16^2+0*16^1+14*16^0=566030,算出來(lái)的值就是這個(gè)數(shù)對(duì)應(yīng)的十進(jìn)制數(shù)
又例如k進(jìn)制數(shù)abcdef(這是一個(gè)6位數(shù))
它就是a*k^5+b*k^4+c*k^3+d*k^2+e*k^1+f*k^0
這樣想就十分簡(jiǎn)單了 給個(gè)題目練習(xí)下: package com.hbut.test;public class Converter {// 2:題目描述// // 用英文字母a-z來(lái)分別表示數(shù)值0-25, 形成一個(gè)26進(jìn)制的數(shù)值表示法。需要你寫(xiě)一個(gè)方法,將用a-z表示的26進(jìn)制數(shù)值的字符串,轉(zhuǎn)化為對(duì)應(yīng)的10進(jìn)制數(shù)值。// 輸入// 輸入數(shù)據(jù)有多組,每組占一行,包含多個(gè)a-z之間的字符。// 樣例輸入// ba// bcd// gibbon// goodboy// // 輸出// 所對(duì)應(yīng)表示的10進(jìn)制數(shù)。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"));}}
輸出結(jié)果:74962693
總結(jié)
以上是生活随笔為你收集整理的进制转换问题---例如把26进制转为10进制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一篇文章搞定面试中的二叉树题目(java
- 下一篇: 序列化以及反序列化二叉树