我正在使用此代码生成短网址。 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?这种按位操作有什么作用? 有人会对我有所了解吗?感谢。
答案 0 :(得分:0)
查看整个代码:encode()
的净效果是将_encode()
应用于最不重要的self.block_size
- 该值的许多位。 _encode()
似乎可以扭转那些位。这似乎只是一点额外的争抢。代码下面的文档解释了为什么他们正在进行所有这些额外的改组。