On Sat, Feb 6, 2010 at 3:00 AM, kevin <[email protected]> wrote:
> can you pl. add this to utils.py as there is no function to decode base36
> created by to36
>
> def from36(q):
>     letters="0123456789abcdefghijklmnopqrstuvwxyz"
>     i = 0
>     for pos, digit in enumerate(q[-1::-1]):
>         i += letters.find(digit) * pow(36, pos)
>     return i
>

I was thinking of adding a more generalized version that I wrote.

class BaseCode:
    def __init__(self, letters):
        self.letters = letters
        self.iletters = dict((c, i) for i, c in enumerate(letters))

    def encode(self, n):
        k = len(self.letters)
        converted = []
        while n != 0:
            n, r = divmod(n, k)
            converted.insert(0, self.letters[r])
        return "".join(converted) or '0'

    def decode(self, s):
        n = 0
        for c in s:
            n = n*36 + self.iletters[c]
        return n

base36 = "0123456789abcdefghijklmnopqrstuvwxyz"
to36 = base36.encode
from36 = base36.decode

Anand

-- 
You received this message because you are subscribed to the Google Groups 
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/webpy?hl=en.

Reply via email to