In Computer Science, quite often, we are required to convert numbers from one base to another. Numbers with bases 2, 8, 10 and 16 are commonly used.
Binary numbers include digits 0 and 1, and so they have base 2. Octal numbers have digits from 0 to 7, thus having base 8. Decimal numbers have digits from 0 to 9, thus have base 10. And hexadecimal numbers have digits from 0 to 9 and then A to F, thus having base 16.
Write a program in Java to convert a number in any base into another base, limiting the base value up to 16.
Example:
INPUT:
Enter the number: AF
Source base: 16
Destination base: 2
OUTPUT:
10101111
import java.io.*;
class AnyBase{
public static void main(String args[])throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the number: ");
String n = br.readLine();
n = n.toUpperCase();
System.out.print("Source base: ");
int s = Integer.parseInt(br.readLine());
System.out.print("Destination base: ");
int d = Integer.parseInt(br.readLine());
String r = convert(n, s, d);
System.out.println(r);
}
public static String convert(String n, int b1, int b2){
if(b1 == b2)
return n;
int deci = 0;
if(b1 != 10)
deci = getDecimal(n, b1);
String result = "";
if(deci == 0)
result = "0";
while(deci != 0){
int d = deci % b2;
if(d < 10)
result = d + result;
else if(d == 10)
result = 'A' + result;
else if(d == 11)
result = 'B' + result;
else if(d == 12)
result = 'C' + result;
else if(d == 13)
result = 'D' + result;
else if(d == 14)
result = 'E' + result;
else if(d == 15)
result = 'F' + result;
deci /= b2;
}
return result;
}
public static int getDecimal(String n, int base){
int d = 0;
int num = 0;
int p = 0;
for(int i = n.length() - 1; i >= 0; i--){
char ch = n.charAt(i);
switch(ch){
case '0':
num = 0;
break;
case '1':
num = 1;
break;
case '2':
num = 2;
break;
case '3':
num = 3;
break;
case '4':
num = 4;
break;
case '5':
num = 5;
break;
case '6':
num = 6;
break;
case '7':
num = 7;
break;
case '8':
num = 8;
break;
case '9':
num = 9;
break;
case 'A':
num = 10;
break;
case 'B':
num = 11;
break;
case 'C':
num = 12;
break;
case 'D':
num = 13;
break;
case 'E':
num = 14;
break;
case 'F':
num = 15;
break;
}
d += num * (int)Math.pow(base, p);
p++;
}
return d;
}
}