Comment encoder et décoder du Base62
- Tapez ou collez du texte dans Entrée · Texte. La chaîne Base62 apparaît dans Sortie · Base62.
- Réglez l’Alphabet sous la sortie selon le système avec lequel vous échangez : 0-9 A-Z a-z ou 0-9 a-z A-Z.
- Pour un identifiant numérique, réglez De sur Entier (grand nombre) et tapez le nombre en décimal. Pour des octets bruts, choisissez Hex ou Base64.
- Pour décoder, cliquez sur Base62 → Texte dans le sélecteur de sens. Le choix d’Alphabet se trouve alors sous l’entrée, et il doit être le même que celui utilisé à l’encodage.
Deux ordres d’alphabet aux résultats différents
Base62 n’a pas de RFC, et ses 62 caractères sont ordonnés de deux façons dans la nature. Ce convertisseur propose les deux :
| Alphabet | Valeur de A | Valeur de a | Hello | 1000000 comme nombre |
|---|---|---|---|---|
0-9 A-Z a-z | 10 | 36 | 5TP3P3v | 4C92 |
0-9 a-z A-Z | 36 | 10 | 5tp3p3V | 4c92 |
Le premier ordre suit l’ordre ASCII : les chaînes encodées de même longueur se trient donc comme les nombres. GMP l’utilise pour les bases 37 à 62. Le second ordre correspond à ce qu’on obtient en prolongeant les minuscules a-f de l’hexadécimal ; certaines bibliothèques l’appellent l’alphabet « inversé ».
Chaque sortie est l’autre avec la casse de chaque lettre inversée. L’erreur passe donc facilement inaperçue : décoder 5tp3p3V avec le mauvais ordre réussit, mais donne les octets 4e 08 14 29 1d au lieu de Hello. Si une valeur décodée paraît illisible, essayez l’autre ordre avant de soupçonner les données.
Base62 pour les identifiants et les URL courts
Les raccourcisseurs d’URL et les schémas d’identifiants utilisent Base62 parce que chaque caractère est sûr dans un chemin d’URL, un nom de fichier et une sélection par double-clic, et que le résultat est court. Un identifiant de base de données est un nombre : encodez-le donc depuis Entier (grand nombre).
| Décimal | Base62 (0-9A-Za-z) |
|---|---|
125 | 21 |
3843 | zz |
3844 | 100 |
1000000 | 4C92 |
123456789 | 8M0kX |
Sept caractères couvrent les nombres jusqu’à 62^7 − 1, soit environ 3 500 milliards. Pour un identifiant aléatoire, encodez des octets aléatoires : un UUID de 16 octets devient 21 ou 22 caractères, contre 32 en hex.
Des identifiants séquentiels courts révèlent combien d’enregistrements existent et se devinent facilement. Si cela compte, encodez des octets aléatoires plutôt qu’un compteur.
Comment Base62 traite les octets et les zéros de tête
Comme 62 n’est pas une puissance de deux, Base62 ne peut pas faire correspondre des groupes de bits à des caractères. Il lit l’entrée comme un seul nombre big-endian et convertit ce nombre en base 62. Les octets nuls de tête disparaîtraient : cet outil écrit donc un chiffre 0 pour chacun d’eux. Les octets 00 00 s’encodent en 00, et 00 ff en 047.
Les bibliothèques divergent là aussi. Beaucoup n’encodent que le nombre et perdent les zéros de tête, et les formats à largeur fixe complètent plutôt jusqu’à une longueur donnée. Si le destinataire attend une largeur fixe, complétez la sortie à gauche avec des 0. L’approche par grand nombre a aussi un coût qui croît avec le carré de la longueur de l’entrée : cet outil limite donc l’entrée Base62 à 64 Ko.
Base62 en Python
Python n’a pas de Base62 dans sa bibliothèque standard. Pour des identifiants entiers, la conversion tient en quelques lignes :
ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
def b62encode(n: int) -> str:
if n == 0:
return ALPHABET[0]
out = ""
while n:
n, r = divmod(n, 62)
out = ALPHABET[r] + out
return out
def b62decode(s: str) -> int:
n = 0
for ch in s:
n = n * 62 + ALPHABET.index(ch)
return n
b62encode(1000000) # '4C92'
b62decode("8M0kX") # 123456789
Inversez les deux blocs de lettres dans ALPHABET pour l’autre ordre. Pour des octets, convertissez d’abord avec int.from_bytes(data, "big"). Plus de détails sur la manipulation d’octets en Python.
FAQ
Quel est l'alphabet Base62 ?
Les dix chiffres plus les 26 lettres majuscules et les 26 minuscules : 62 caractères, rien d’autre. Les chiffres viennent toujours en premier, mais les bibliothèques ne s’accordent pas sur ce qui suit, les majuscules (0-9A-Za-z) ou les minuscules (0-9a-zA-Z).
Quelle est la différence entre Base62 et Base64 ?
Base64 ajoute + et / (ou - et _) et le remplissage =, et découpe en groupes fixes de 6 bits. Base62 n’utilise que des lettres et des chiffres : il ne demande donc d’échappement nulle part, mais 62 n’est pas une puissance de deux et il doit traiter les données comme un seul grand nombre. La sortie est environ 1 % plus longue qu’en Base64.
Comment encoder un nombre en Base62 ?
Réglez De sur Entier (grand nombre) et tapez le nombre décimal. 1000000 devient 4C92 avec l’alphabet par défaut. Encoder le nombre comme du texte encoderait plutôt les caractères de ses chiffres.
Base62 est-il sensible à la casse ?
Oui. A et a sont des chiffres différents, qui valent 10 et 36 dans l’ordre par défaut. Un système qui passe les URL ou les identifiants en minuscules corrompra les chaînes Base62 ; utilisez Base36 si la casse risque de se perdre.