[Tutor] Doing this in reverse?

Alan Gilfoy agilfoy at frontiernet.net
Sun Sep 14 03:02:43 CEST 2008


I found a script at http://code.activestate.com/recipes/65212/ that  
allows you to convert base 10 numbers to another base. I would like to  
convert non-base10 numbers to base 10. I wonder if I can do so by  
flipping the script around a bit:

# (Lovingly) ripped off from a reply to the post at
# http://code.activestate.com/recipes/65212/
# The function code is from that page
# User Interface + comments created by Alan Gilfoy, 2007-2008

def baseconvert(n, base):
     """convert positive decimal integer n to equivalent in another  
base (2-36)"""

     digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     # a thru z only apply in base 11 and up.
     # base 11 uses only a, base 12 uses a thru b, base 13 uses a thru  
c, and so on.
     # 'a' is equivalent to '10' in decimal, 'b' is equivalent to '11', etc.

     try:
         n = int(n)
         base = int(base)
     except:
         return ""

     if n < 0 or base < 2 or base > 36:
         return ""

     s = ""
     while 1:
         r = n % base
         s = digits[r] + s
         n = n / base
         if n == 0:
             break

     return s

----
I'm not entirely sure how this works; I just know that it does.
It looks like the program goes through a loop that "chops away" at the  
inputted number, gradually adding to the outputted number as  
appropriate.
And what exactly does the % operator mean?





More information about the Tutor mailing list