2011-06-09 58 views
0

我正在使用此代碼生成短url。 http://code.activestate.com/recipes/576918/Python短url生成器

這個想法是使用base62和函數enbase編碼一個整數ID只是工作正常。

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?那個按位操作是做什麼的? 有人可以對我有所瞭解嗎?謝謝。

+0

你可以顯示'self.mask'的值嗎?你可以顯示'_encode'功能嗎? – 2011-06-09 06:52:05

+0

在這裏:http://code.activestate.com/recipes/576918/ – thoslin 2011-06-09 06:55:13

回答

0

查看整個代碼:encode()的淨效果是將_encode()應用於值最低的self.block_size位。 _encode()似乎顛倒了這些位。這似乎只是一個額外的加擾。代碼下面的文檔解釋了他們爲什麼要做所有這些額外洗牌。

+0

>代碼下面的文檔解釋了他們爲什麼要做所有這些額外洗牌。 +1 – Guard 2011-06-09 08:37:14