[utils] Multiple changes to base_n()
1. Renamed to encode_base_n() 2. Allow tables longer than 62 characters 3. Raise ValueError instead of AssertionError for invalid input data 4. Return the first character in the table instead of '0' for number 0 5. Add tests
This commit is contained in:
parent
5633b4d39d
commit
5eb6bdced4
2 changed files with 20 additions and 6 deletions
|
@ -2621,15 +2621,17 @@ def ohdave_rsa_encrypt(data, exponent, modulus):
|
|||
return '%x' % encrypted
|
||||
|
||||
|
||||
def base_n(num, n, table=None):
|
||||
if num == 0:
|
||||
return '0'
|
||||
|
||||
def encode_base_n(num, n, table=None):
|
||||
FULL_TABLE = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
||||
assert n <= len(FULL_TABLE)
|
||||
if not table:
|
||||
table = FULL_TABLE[:n]
|
||||
|
||||
if n > len(table):
|
||||
raise ValueError('base %d exceeds table length %d' % (n, len(table)))
|
||||
|
||||
if num == 0:
|
||||
return table[0]
|
||||
|
||||
ret = ''
|
||||
while num:
|
||||
ret = table[num % n] + ret
|
||||
|
@ -2649,7 +2651,7 @@ def decode_packed_codes(code):
|
|||
|
||||
while count:
|
||||
count -= 1
|
||||
base_n_count = base_n(count, base)
|
||||
base_n_count = encode_base_n(count, base)
|
||||
symbol_table[base_n_count] = symbols[count] or base_n_count
|
||||
|
||||
return re.sub(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue