J'ai oublié quelque part dans l'histoire originale, mais j'ai porté du code tel que Ruby qui était tombé quelque part.
# -*- coding: utf-8 -*-
"""
convert_table est une liste de caractères.
Utilisez cette liste pour la conversion radix.
Si la longueur de la liste est de 62, cela ressemble à une conversion en 62 base.
Entrez int sous forme de nombre décimal.
"""
import math
def string_to_int(target, convert_table):
def char_to_int(char):
return convert_table.index(char)
int_result = 0
target = [char for char in target]
target.reverse()
for index, char in enumerate(target):
int_result += char_to_int(char) * int(math.pow(len(convert_table), index))
return int_result
def int_to_string(target, convert_table):
def int_to_char(int_value):
return convert_table[int_value]
string_result = ""
while target > 0:
string_result = int_to_char(target % len(convert_table)) + string_result
target /= len(convert_table)
return string_result
def generate_convert_table():
convert_table_base = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
convert_table_base_list = list(convert_table_base)
import random
random.shuffle(convert_table_base_list)
return "".join(convert_table_base_list)
Recommended Posts