Python >> Tutoriel Python >  >> Python

Python Convert Decimal to 62 Base:Un guide complet - Tutoriel Python

De nos jours, raccourcir une URL longue en une URL courte est largement utilisé. L'algorithme de base derrière cela est de convertir un nombre décimal en base 62. Dans ce tutoriel, nous verrons comment convertir en python.

Qu'est-ce que la base 62 ?

Il est composé de 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.

Par exemple :Z =61 et 10 =62

Comment convertir un nombre décimal en base 62 ?

Nous allons écrire un exemple pour vous montrer comment convertir.

BASE62 = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def encode(num, alphabet=BASE62):
    if num == 0:
        return alphabet[0]
    arr = []
    base = len(alphabet)
    while num:
        num, rem = divmod(num, base)
        arr.append(alphabet[rem])
    arr.reverse()
    return ''.join(arr)

Dans cet exemple, nous utiliserons la fonction encode() pour convertir un nombre décimal en base 62.

Voici un exemple :

print(encode(10))
print(encode(62))
print(encode(100))
print(encode(100000))

Les 62 nombres de base sont :

a
10
1C
q0U

Comment convertir une base 62 en décimal ?

Nous pouvons également créer une fonction pour convertir.

def decode(string, alphabet=BASE62):
    base = len(alphabet)
    strlen = len(string)
    num = 0

    idx = 0
    for char in string:
        power = (strlen - (idx + 1))
        num += alphabet.index(char) * (base ** power)
        idx += 1

    return num

Nous pouvons utiliser cette fonction comme :

print(decode('a'))
print(decode('10'))
print(decode('1C'))
print(decode('q0U'))

Les nombres décimaux sont :

10
62
100
100000