Python генератор коротких URL - PullRequest
0 голосов
/ 09 июня 2011

Я использую этот код для генерации короткого URL. http://code.activestate.com/recipes/576918/

Идея состоит в том, чтобы закодировать целочисленный идентификатор с использованием base62, а функция enbase просто отлично работает.

class UrlEncoder(object):
    ...
    def enbase(self, x, min_length=0):
        result = self._enbase(x)
        padding = self.alphabet[0] * (min_length - len(result))
        return '%s%s' % (padding, result)

Но я не совсем понимаю, для чего этот код:

class UrlEncoder(object):
    ...

    def encode_url(self, n, min_length=0):
        return self.enbase(self.encode(n), min_length)
    def decode_url(self, n):
        return self.decode(self.debase(n))
    def encode(self, n):
        return (n & ~self.mask) | self._encode(n & self.mask)

Зачем кодировать тогда enbase? Что делает эта побитовая операция? Может ли кто-нибудь пролить свет на меня? Благодаря.

1 Ответ

0 голосов
/ 09 июня 2011

Глядя на весь код: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * _encode() применяется ко всем младшим значащим битам значения self.block_size._encode(), кажется, инвертирует эти биты.Кажется, это всего лишь дополнительная борьба.Документация под кодом объясняет, почему они делают все эти дополнительные тасовки.

...