Any Base to Any Base Conversion in Java

In Computer Science, quite often, we are required to convert numbers from one base to another. Numbers with base 2, 8, 10 and 16 are commonly used.

Base 2 numbers are binary numbers. Base 8 are octal numbers. Base 10 are decimal numbers. Base 16 are hexadecimal numbers.

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;
    }
}

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.