def a12toi(s): if not s: return 0 i = 0 sign = 1 s0 = s[:1] if s0 in ('-', '+'): s = s[1:] if s0 == '-': sign = -1 digits = "0123456789ab" try: for c in s: i = i * 12 + digits.index(c) except ValueError: pass return sign * i def test(): assert(a12toi("") == 0); assert(a12toi("b") == 11); assert(a12toi("10c") == 12); assert(a12toi("+123ab") == 24755); assert(a12toi("-123ab") == -24755); test()