Convert from any base to decimal and vice versa - GeeksforGeeks

27 May, 2021
Given a number and its base, convert it to decimal. The base of number can be anything such that all digits can be represented using 0 to 9 and A to Z. The value of A is 10, the value of B is 11 and so on. Write a function to convert the number to decimal.
Examples: 
Input number is given as string and output is an integer.

Input: str = "1100", base = 2 
Output: 12

Input: str = "11A", base = 16
Output: 282

Input: str = "123",  base = 8
Output: 83 
We strongly recommend you to minimize your browser and try this yourself first. We can always use the below formula to convert from any base to decimal.
"str" is input number as a string 
"base" is the base of the input number.

Decimal Equivalent is,
  1*str[len-1] + base*str[len-2] + (base)2*str[len-3] + ...
Below is implementation of above formula.  
C
Java
Python3
C#
PHP
Javascript
// C program to convert a number from any base// to decimal#include <stdio.h>#include <string.h> // To return value of a char. For example, 2 is// returned for '2'.  10 is returned for 'A', 11// for 'B'int val(char c){    if (c >= '0' && c <= '9')        return (int)c - '0';    else        return (int)c - 'A' + 10;} // Function to convert a number from given base 'b'// to decimalint toDeci(char *str, int base){    int len = strlen(str);    int power = 1; // Initialize power of base    int num = 0;  // Initialize result    int i;     // Decimal equivalent is str[len-1]*1 +    // str[len-2]*base + str[len-3]*(base^2) + ...    for (i = len - 1; i >= 0; i--)    {        // A digit in input number must be        // less than number's base        if (val(str[i]) >= base)        {           printf("Invalid Number");           return -1;        }         num += val(str[i]) * power;        power = power * base;    }     return num;} // Driver codeint main(){    char str[] = "11A";    int base = 16;    printf("Decimal equivalent of %s in base %d is "           " %d\n", str, base, toDeci(str, base));    return 0;}
// Java program to convert// a number from any base// to decimalimport java.io.*; class GFG{// To return value of a char.// For example, 2 is returned// for '2'. 10 is returned// for 'A', 11 for 'B'static int val(char c){    if (c >= '0' && c <= '9')        return (int)c - '0';    else        return (int)c - 'A' + 10;} // Function to convert a// number from given base// 'b' to decimalstatic int toDeci(String str,                  int base){    int len = str.length();    int power = 1; // Initialize                   // power of base    int num = 0; // Initialize result    int i;     // Decimal equivalent is    // str[len-1]*1 + str[len-2] *    // base + str[len-3]*(base^2) + ...    for (i = len - 1; i >= 0; i--)    {        // A digit in input number        // must be less than        // number's base        if (val(str.charAt(i)) >= base)        {        System.out.println("Invalid Number");        return -1;        }         num += val(str.charAt(i)) * power;        power = power * base;    }     return num;} // Driver codepublic static void main (String[] args){    String str = "11A";    int base = 16;    System.out.println("Decimal equivalent of "+                        str + " in base "+ base +                                     " is "+ " "+                              toDeci(str, base));}} // This code is contributed// by anuj_67.
# Python program to convert a# number from any base to decimal # To return value of a char.# For example, 2 is returned# for '2'. 10 is returned for 'A',# 11 for 'B'def val(c):    if c >= '0' and c <= '9':        return ord(c) - ord('0')    else:        return ord(c) - ord('A') + 10; # Function to convert a number# from given base 'b' to decimaldef toDeci(str,base):    llen = len(str)    power = 1 #Initialize power of base    num = 0     #Initialize result     # Decimal equivalent is str[len-1]*1 +    # str[len-2]*base + str[len-3]*(base^2) + ...    for i in range(llen - 1, -1, -1):                 # A digit in input number must        # be less than number's base        if val(str[i]) >= base:            print('Invalid Number')            return -1        num += val(str[i]) * power        power = power * base    return num     # Driver codestrr = "11A"base = 16print('Decimal equivalent of', strr,              'in base', base, 'is',                 toDeci(strr, base)) # This code is contributed# by Sahil shelangia
// C# program to convert// a number from any base// to decimalusing System; class GFG{// To return value of a char.// For example, 2 is returned// for '2'. 10 is returned// for 'A', 11 for 'B'static int val(char c){    if (c >= '0' && c <= '9')        return (int)c - '0';    else        return (int)c - 'A' + 10;} // Function to convert a// number from given base// 'b' to decimalstatic int toDeci(string str,                  int b_ase){    int len = str.Length;    int power = 1; // Initialize                   // power of base    int num = 0; // Initialize result    int i;     // Decimal equivalent is    // str[len-1]*1 + str[len-2] *    // base + str[len-3]*(base^2) + ...    for (i = len - 1; i >= 0; i--)    {        // A digit in input number        // must be less than        // number's base        if (val(str[i]) >= b_ase)        {        Console.WriteLine("Invalid Number");        return -1;        }         num += val(str[i]) * power;        power = power * b_ase;    }     return num;} // Driver codepublic static void Main (){    string str = "11A";    int b_ase = 16;    Console.WriteLine("Decimal equivalent of "+                     str + " in base "+ b_ase +                  " is " + toDeci(str, b_ase));}} // This code is contributed// by anuj_67.
<?php// PHP program to convert a number from// any base to decimal // To return value of a char. For example,// 2 is returned for '2'. 10 is returned// for 'A', 11 for 'B'function val($c){    if ($c >= '0' && $c <= '9')        return ord($c) - ord('0');    else        return ord($c) - ord('A') + 10;} // Function to convert a number from given// base 'b' to decimalfunction toDeci($str, $base){    $len = strlen($str);    $power = 1; // Initialize power of base    $num = 0; // Initialize result     // Decimal equivalent is str[len-1]*1 +    // str[len-2]*base + str[len-3]*(base^2) + ...    for ($i = $len - 1; $i >= 0; $i--)    {        // A digit in input number must be        // less than number's base        if (val($str[$i]) >= $base)        {            print("Invalid Number");            return -1;        }         $num += val($str[$i]) * $power;        $power = $power * $base;    }     return $num;} // Driver code$str = "11A";$base = 16;print("Decimal equivalent of $str " .      "in base $base is " . toDeci($str, $base)); // This code is contributed by mits?>
<script> // Javascript program to convert// a number from any base// to decimal // To return value of a char.// For example, 2 is returned// for '2'. 10 is returned// for 'A', 11 for 'B'function val(c){    if (c >= '0'.charCodeAt() &&        c <= '9'.charCodeAt())        return (c - '0'.charCodeAt());    else        return (c - 'A'.charCodeAt() + 10);} // Function to convert a// number from given base// 'b' to decimalfunction toDeci(str, b_ase){    let len = str.length;         // Initialize    // power of base    let power = 1;         // Initialize result    let num = 0;    let i;     // Decimal equivalent is    // str[len-1]*1 + str[len-2] *    // base + str[len-3]*(base^2) + ...    for(i = len - 1; i >= 0; i--)    {                 // A digit in input number        // must be less than        // number's base        if (val(str[i].charCodeAt()) >= b_ase)        {            document.write("Invalid Number");            return -1;        }         num += val(str[i].charCodeAt()) * power;        power = power * b_ase;    }    return num;} // Driver codelet str = "11A";let b_ase = 16; document.write("Decimal equivalent of "+               str + " in base "+ b_ase +               " is " + toDeci(str, b_ase));                // This code is contributed by divyesh072019 </script>
Output : 
Decimal equivalent of 11A in base 16 is 282
How to do reverse? Let the given input decimal number be “inputNum” and target base be “base”. We repeatedly divide inputNum by base and store the remainder. We finally reverse the obtained string. Below is C implementation.
C
Java
Python3
C#
PHP
Javascript
// C Program to convert decimal to any given base#include <stdio.h>#include <string.h> // To return char for a value. For example '2'// is returned for 2. 'A' is returned for 10. 'B'// for 11char reVal(int num){    if (num >= 0 && num <= 9)        return (char)(num + '0');    else        return (char)(num - 10 + 'A');} // Utility function to reverse a stringvoid strev(char *str){    int len = strlen(str);    int i;    for (i = 0; i < len/2; i++)    {        char temp = str[i];        str[i] = str[len-i-1];        str[len-i-1] = temp;    }} // Function to convert a given decimal number// to a base 'base' andchar* fromDeci(char res[], int base, int inputNum){    int index = 0;  // Initialize index of result     // Convert input number is given base by repeatedly    // dividing it by base and taking remainder    while (inputNum > 0)    {        res[index++] = reVal(inputNum % base);        inputNum /= base;    }    res[index] = '\0';     // Reverse the result    strev(res);     return res;} // Driver programint main(){    int inputNum = 282, base = 16;    char res[100];    printf("Equivalent of %d in base %d is "           " %s\n", inputNum, base, fromDeci(res, base, inputNum));    return 0;}
// Java Program to convert decimal to any given baseimport java.lang.*;import java.io.*;import java.util.*; class GFG{     // To return char for a value. For// example '2' is returned for 2.// 'A' is returned for 10. 'B' for 11static char reVal(int num){    if (num >= 0 && num <= 9)        return (char)(num + 48);    else        return (char)(num - 10 + 65);} // Function to convert a given decimal number// to a base 'base' andstatic String fromDeci(int base1, int inputNum){    String s = "";     // Convert input number is given    // base by repeatedly dividing it    // by base and taking remainder    while (inputNum > 0)    {        s += reVal(inputNum % base1);        inputNum /= base1;    }    StringBuilder ix = new StringBuilder();         // append a string into StringBuilder input1        ix.append(s);     // Reverse the result    return new String(ix.reverse());} // Driver codepublic static void main (String[] args){    int inputNum = 282, base1 = 16;    System.out.println("Equivalent of " + inputNum +                            " in base "+base1+" is " +                            fromDeci(base1, inputNum));}} // This code is contributed by mits
# Python3 Program to convert decimal to# any given base # To return char for a value. For example# '2' is returned for 2. 'A' is returned# for 10. 'B' for 11def reVal(num):     if (num >= 0 and num <= 9):        return chr(num + ord('0'));    else:        return chr(num - 10 + ord('A')); # Utility function to reverse a stringdef strev(str):     len = len(str);    for i in range(int(len / 2)):        temp = str[i];        str[i] = str[len - i - 1];        str[len - i - 1] = temp; # Function to convert a given decimal# number to a base 'base' anddef fromDeci(res, base, inputNum):     index = 0; # Initialize index of result     # Convert input number is given base    # by repeatedly dividing it by base    # and taking remainder    while (inputNum > 0):        res+= reVal(inputNum % base);        inputNum = int(inputNum / base);     # Reverse the result    res = res[::-1];     return res; # Driver CodeinputNum = 282;base = 16;res = "";print("Equivalent of", inputNum, "in base",       base, "is", fromDeci(res, base, inputNum)); # This code is contributed by mits
// C# Program to convert decimal to any given baseusing System;using System.Collections; class GFG{     // To return char for a value. For// example '2' is returned for 2.// 'A' is returned for 10. 'B' for 11static char reVal(int num){    if (num >= 0 && num <= 9)        return (char)(num + 48);    else        return (char)(num - 10 + 65);} // Function to convert a given decimal number// to a base 'base' andstatic string fromDeci(int base1, int inputNum){    string s = "";     // Convert input number is given    // base by repeatedly dividing it    // by base and taking remainder    while (inputNum > 0)    {        s += reVal(inputNum % base1);        inputNum /= base1;    }    char[] res = s.ToCharArray();     // Reverse the result    Array.Reverse(res);    return new String(res);} // Driver codestatic void Main(){    int inputNum = 282, base1 = 16;    Console.WriteLine("Equivalent of " + inputNum +                            " in base "+base1+" is " +                            fromDeci(base1, inputNum));}} // This code is contributed by mits
<?php// PHP Program to convert decimal to// any given base // To return char for a value. For example '2'// is returned for 2. 'A' is returned for 10.// 'B' for 11function reVal($num){    if ($num >= 0 && $num <= 9)        return chr($num + ord('0'));    else        return chr($num - 10 + ord('A'));} // Utility function to reverse a stringfunction strev($str){    $len = strlen($str);    for ($i = 0; $i < $len / 2; $i++)    {        $temp = $str[$i];        $str[$i] = $str[$len - $i - 1];        $str[$len - $i - 1] = $temp;    }} // Function to convert a given decimal// number to a base 'base' andfunction fromDeci($res, $base, $inputNum){    $index = 0; // Initialize index of result     // Convert input number is given base    // by repeatedly dividing it by base    // and taking remainder    while ($inputNum > 0)    {        $res.= reVal($inputNum % $base);        $inputNum = (int)($inputNum / $base);    }     // Reverse the result    $res = strrev($res);     return $res;} // Driver Code$inputNum = 282;$base = 16;$res = "";print("Equivalent of $inputNum in base $base is " .                 fromDeci($res, $base, $inputNum)); // This code is contributed by mits?>
<script>    // Javascript Program to convert decimal to any given base         // To return char for a value. For    // example '2' is returned for 2.    // 'A' is returned for 10. 'B' for 11    function reVal(num)    {        if (num >= 0 && num <= 9)            return String.fromCharCode(num + 48);        else            return String.fromCharCode(num - 10 + 65);    }     // Function to convert a given decimal number    // to a base 'base' and    function fromDeci(base1, inputNum)    {        let s = "";         // Convert input number is given        // base by repeatedly dividing it        // by base and taking remainder        while (inputNum > 0)        {            s += reVal(inputNum % base1);            inputNum = parseInt(inputNum / base1, 10);        }        let res = s.split('');         // Reverse the result        res.reverse();        return res.join("");    }         let inputNum = 282, base1 = 16;    document.write("Equivalent of " + inputNum +                            " in base "+base1+" is " +                            fromDeci(base1, inputNum)); // This code is contributed by rameshtravel07.</script>
Output :
Equivalent of 282 in base 16 is  11A
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
vt_m
sahilshelangia
Mithun Kumar
anshuunstoppable
divyesh072019
rameshtravel07
base-conversion
Motlay
Mathematical
Motlay
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Program to find sum of elements in a given array
Operators in C / C++
Euclidean algorithms (Basic and Extended)
Algorithm to solve Rubik's Cube
The Knight's tour problem | Backtracking-1
Write a program to calculate pow(x,n)
Print all possible combinations of r elements in a given array of size n
How to swap two numbers without using a temporary variable?
Find minimum number of coins that make a given value
Write a program to reverse digits of a number