0

我正在使用此代码生成短网址。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?这个按位运算有什么作用?有人可以对我有所了解吗?谢谢。

4

1 回答 1

0

查看整个代码: 的净效果encode()是应用于值_encode()的最低有效self.block_size位。_encode()似乎扭转了这些位。这似乎只是一个额外的加扰。代码下方的文档解释了他们为什么要进行所有这些额外的洗牌。

于 2011-06-09T07:02:24.250 回答