## Sunday, March 6, 2016

### Convert from any base to decimal and vice versa - GeeksforGeeks

Convert from any base to decimal and vice versa - GeeksforGeeks
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. Value of A is 10, value of B is 11 and so on. Write a function to convert the number to decimal.

`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 decimal`
`int` `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-1]*base + str[len-1]*(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;`
`}`