給出一個非負整數,將它表示成十六進制的形式。
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);
}
}