1 def natural_to_string(n, alphabet=None):
3 raise TypeError('n must be a natural')
10 assert len(set(alphabet)) == len(alphabet)
13 n, x = divmod(n, len(alphabet))
14 res.append(alphabet[x])
18 def string_to_natural(s, alphabet=None):
20 assert not s.startswith('\x00')
21 return int(s.encode('hex'), 16) if s else 0
23 assert len(set(alphabet)) == len(alphabet)
24 assert not s.startswith(alphabet[0])
25 return sum(alphabet.index(char) * len(alphabet)**i for i, char in enumerate(reversed(s)))