0

このコードを使用して短縮URLを生成しています。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)

なぜエンコードしてからエンベースするのですか?そのビット演算は何をしますか?誰かが私に光を当てることができますか?ありがとう。

4

1 に答える 1

0

コード全体を見ると、の正味の効果は、値の最下位の多くのビットencode()に適用されることです。それらのビットを逆にするように見えます。それはほんの少しの追加のスクランブリングのようです。コードの下のドキュメントは、なぜこれらすべての余分なシャッフルを行っているのかを説明しています。_encode()self.block_size_encode()

于 2011-06-09T07:02:24.250 に答える