Mike Moum wrote: > s.atoi('4',3) should result in 11 > > s.atoi('13',4) should result in 31 > > s.atoi('12',4) should result in 30 > > s.atoi('8',4) is legitimate, but it generates an error. > > Is this a bug, or am I missing something obvious?
You and atoi() seem to disagree about the direction of the conversion, and atoi() wins :-). It converts a string representation of a number into the corresponding integer. The second parameter specifies in what base this string is given. You seem to want something like import string def itoa(n, base): assert 2 <= base <= 16 if n < 0: digits = ["-"] n = -n else: digits = [] while n: n, m = divmod(n, base) digits.append(string.hexdigits[m]) digits.reverse() return "".join(digits) if __name__ == "__main__": assert itoa(4, 3) == "11" assert itoa(13, 4) == "31" assert itoa(12, 4) == "30" assert itoa(8, 4) == "20" Peter -- http://mail.python.org/mailman/listinfo/python-list