This is from a Python-based computer science course I took last semester that's designed to handle up to base-16.
import string
def baseNTodecimal():
    # get the number as a string
    number = raw_input("Please type a number: ")
    # convert it to all uppercase to match hexDigits (below)
    number = string.upper(number)
    # get the base as an integer
    base = input("Please give me the base: ")
    # the number of values that we have to change to base10
    digits = len(number)
    base10 = 0
    # first position of any baseN number is 1's
    position = 1
    # set up a string so that the position of
    # each character matches the decimal
    # value of that character
    hexDigits = "0123456789ABCDEF"
    # for each 'digit' in the string
    for i in range(1, digits+1):
        # find where it occurs in the string hexDigits
        digit = string.find(hexDigits, number[-i])
        # multiply the value by the base position
        # and add it to the base10 total
        base10 = base10 + (position * digit)
        print number[-i], "is in the " + str(position) + "'s position"
        # increase the position by the base (e.g., 8's position * 2 = 16's position)
        position = position * base
    print "And in base10 it is", base10
Basically, it takes input as a string and then goes through and adds up each "digit" multiplied by the base-10 position. Each digit is actually checked for its index-position in the string hexDigits which is used as the numerical value.
Assuming the number that it returns is actually larger than the programming language supports, you could build up an array of Ints that represent the entire number:
[214748364, 8]
would represent 2147483648 (a number that a Java int couldn't handle).