基礎(chǔ)算法—十六轉(zhuǎn)十進(jìn)制
問題描述
從鍵盤輸入一個不超過8位的正的十六進(jìn)制數(shù)字符串,將它轉(zhuǎn)換為正的十進(jìn)制數(shù)后輸出。
注:十六進(jìn)制數(shù)中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
樣例輸出
65535
代碼實現(xiàn)
import java.math.BigInteger; import java.util.Scanner; public class Main { //十六轉(zhuǎn)十進(jìn)制 public enum num{ //定義一個枚舉存儲十六進(jìn)制A~F值的枚舉 A(10),B(11),C(12),D(13),E(14),F(15); private int value; num(int value) { this.value=value; } private int getnum() { return value; } private void setnum(int value) { this.value=value; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); String x=sc.nextLine(); String y=""; //sum最后輸出的值 //z代表16的幾次方 long sum=0,z=0; if(x.length()<=8) { //按權(quán)展開 for (int i = x.length(); i > 0; i--) { char a=x.charAt(i-1); if(a>=65&&a<=70) {//判斷a是否在A~F之間 sum+=num.valueOf(String.valueOf(a)).value*Math.pow(16,z); }else if(a>=48&&a<=57) {//判斷a是否在0~9之間 sum+=Integer.parseInt(String.valueOf(a))*Math.pow(16,z); } z++; } } System.out.println(sum); } }
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。