藍橋杯:基礎練習 十進制轉十六制

基礎練習 十進制轉十六進制  
時間限制:1.0s   內存限制:512.0MB
      
問題描述
  十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進制數的0至15。十六進制的計數方法是滿16進1,所以十進制數16在十六進制中是10,而十進制的17在十六進制中是11,以此類推,十進制的30在十六進制中是1E。
  給出一個非負整數,將它表示成十六進制的形式。
輸入格式
  輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
  輸出這個整數的16進製表示
樣例輸入
30
樣例輸出
1E
分析數據規模在long範圍之內,因此,直接調用封裝好的方法實現。

import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long number = sc.nextLong();
		String arry = Long.toHexString(number);//十進制轉十六進制
		arry = arry.toUpperCase();
		System.out.println(arry);
	}
}


之後自己寫了算法實現:16進制可理解爲逢16進1,因此在循環中對十進制數進行 mod 16(十進制數不斷累除16,產生新的十進制數),獲取餘數,再對餘數進行判斷,若<10,則該位爲此餘數。否則,10->A,11->B,12->C,13->D,14->E,15->F。通過建立StringBuilder對象 和append()方法,連接每位16進制數,其中獲取到的16進制字符串爲逆序的16進制字符串,需要進行逆序操作,最終轉換爲16進制字符串

import java.util.Scanner;

public class Main{

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long number = sc.nextLong();
		int remainder = 0;
		int len;
		StringBuilder st = new StringBuilder();
		do{
			remainder = (int) (number % 16);
			number = number / 16;
			switch (remainder) {
			case 10:
				st.append("A");
				break;
			case 11:
				st.append("B");
				break;
			case 12:
				st.append("C");
				break;
			case 13:
				st.append("D");
				break;
			case 14:
				st.append("E");
				break;
			case 15:
				st.append("F");
				break;
			default:
				st.append(remainder);
				break;
			}
		}while(number >= 1);
		len = st.toString().length();
		char [] arry = st.toString().toCharArray();
		st = new StringBuilder();
		for(int i = len - 1; i >= 0; i--){
			st.append(arry[i]);
		}
		System.out.println(st);
	}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章