Python 短网址生成器
我正在使用这段代码来生成短网址。http://code.activestate.com/recipes/576918/
这个想法是用 base62 来编码一个整数 ID,而函数 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
看整个代码的效果:encode()
这个函数的作用是对值的最低有效位,也就是最后几位,进行处理,具体是处理 self.block_size
指定的位数。_encode()
这个函数似乎是把这些位反转过来。总的来说,这只是多了一点额外的混淆。下面的文档会解释为什么要做这些额外的操作。