十進位制轉二進位制八進位制16進位制
阿新 • • 發佈:2019-01-07
//主函式,同樣和C中的主函式類似
public static void main(String[] args) {
//建立陣列
// 類似於C程式碼 String temp[100];
String temp[] = new String[100];
// 類似於C程式碼 String array[100];
String array[] = new String[100];
// 類似於C程式碼 String hexChar[] = { };
String[] hexChar = {"A" , "B", "C", "D", "E", "F"};
//輸入 類似與C程式碼
Scanner scanner = new Scanner(System.in);
//待轉換的數 類似與C程式碼的輸入函式 scanf("%d",&num)
int num = scanner.nextInt();
//待轉換的進位制 類似與C程式碼的輸入函式 scanf("%d",&radix)
int radix = scanner.nextInt();
//記錄陣列長度
int length = 0;
do {
int r = num % radix;
//10 -> 16進位制的邏輯處理
if (radix == 16) {
if (r >= 10) {
// r%10 求餘匹配十六進位制中的字元(10-A 11-B ....)
temp[length++] = hexChar[(r % 10)];
} else {
// +"" 為隱式型別轉換,將int轉換成String型別
temp[length++] = r + "";
}
//10->2 或者 10->8進位制的邏輯處理
} else {
temp[length++] = r + "";
}
//求商
num /= radix;
} while (num > 0);
int index = 0;
//陣列倒排
for (int t = length - 1; t >= 0; t--) {
array[index++] = temp[t];
}
//列印轉換的結果
for (int i = 0; i < length; i++) {
//System.out.print 類似於 print("%s",array[i])函式
System.out.print(array[i]);
}
}