Convertir un nombre en base 62 en PHP
Fermé
Broum
-
16 nov. 2010 à 13:12
phpguru Messages postés 1 Date d'inscription jeudi 23 juin 2011 Statut Membre Dernière intervention 23 juin 2011 - 23 juin 2011 à 11:59
phpguru Messages postés 1 Date d'inscription jeudi 23 juin 2011 Statut Membre Dernière intervention 23 juin 2011 - 23 juin 2011 à 11:59
A voir également:
- Php base62
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- \R php ✓ - Forum PHP
- Php alert ✓ - Forum PHP
- Retour a la ligne php - Forum Webmastering
6 réponses
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
17 nov. 2010 à 14:24
17 nov. 2010 à 14:24
Bonjour,
On peut coder ça assez facilement.
Voici un exemple :
Cette version peut convertir jusqu'à la base 62, car j'ai défini 62 caractères dans $tableauCaracteres. Mais il suffit de rajouter des valeurs au tableau pour pouvoir convertir dans des bases supérieures...
Il faudrait également rajouter des garde-fous, du genre si $base > sizeof($tableau) blablabla.
Ça me donne le résultat suivant pour la base 62 :
5 -> 5
32 -> w
61 -> Z
62 -> 10
63 -> 11
2515348421 -> 2Ke91
Xavier
On peut coder ça assez facilement.
Voici un exemple :
// initialisation du tableau des caractères $tableauCaracteres = array(); $i = 0; $lettreMin = 'a'; $lettreMaj = 'A'; while ($i < 10) // Les chiffres $tableauCaracteres[] = (string)$i++; while ($i < 36) // Les minuscules { $tableauCaracteres[] = $lettreMin; $lettreMin++; $i++; } while ($i < 62) // Les majuscules { $tableauCaracteres[] = $lettreMaj; $lettreMaj++; $i++; } // Fonction de conversion proprement dite function my_base_convert($valeur, $base) { global $tableauCaracteres; $resultat = ""; while($valeur >= $base) { $reste = $valeur % $base; // Le reste de la division de $valeur par $base $resultat = $tableauCaracteres[$reste].$resultat; $valeur = $valeur / $base; } $resultat = $tableauCaracteres[$valeur].$resultat; return $resultat; }
Cette version peut convertir jusqu'à la base 62, car j'ai défini 62 caractères dans $tableauCaracteres. Mais il suffit de rajouter des valeurs au tableau pour pouvoir convertir dans des bases supérieures...
Il faudrait également rajouter des garde-fous, du genre si $base > sizeof($tableau) blablabla.
Ça me donne le résultat suivant pour la base 62 :
5 -> 5
32 -> w
61 -> Z
62 -> 10
63 -> 11
2515348421 -> 2Ke91
Xavier
coeus
Messages postés
3021
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
119
16 nov. 2010 à 15:38
16 nov. 2010 à 15:38
Bonjour Broum !
C'est normal que ça n'aille pas plus haut que 36. Quels caractères voudrais-tu qui représentent les nombres de 36 à 62 ? De 10 à 36, on a les lettres de l'alphabet. Si on compte en base 36, ça donne :
1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, [...] x, y, z, 10, 11, 12, [...] 1x, 1y, 1z, 20, 21, 22, et ainsi de suite. En base 62, ça donnerait quoi ?
1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, [...] x, y, z, !, ", /, #, %, etc. ?
Est-ce que c'est seulement pour convertir un nombre, ou pour effectuer un calcul en base 62 ? C'est très différent selon moi. Il faudra mettre un mathématicien là-dessus ! ;)
C'est normal que ça n'aille pas plus haut que 36. Quels caractères voudrais-tu qui représentent les nombres de 36 à 62 ? De 10 à 36, on a les lettres de l'alphabet. Si on compte en base 36, ça donne :
1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, [...] x, y, z, 10, 11, 12, [...] 1x, 1y, 1z, 20, 21, 22, et ainsi de suite. En base 62, ça donnerait quoi ?
1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, [...] x, y, z, !, ", /, #, %, etc. ?
Est-ce que c'est seulement pour convertir un nombre, ou pour effectuer un calcul en base 62 ? C'est très différent selon moi. Il faudra mettre un mathématicien là-dessus ! ;)
Ah oui, j'ai oublier de préciser, les autres caractères sont les lettres en majuscules.
Voici la chaîne de caractères à utiliser : 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
J'en est besoin pour convertir un nombre afin de générer un ID court pour un script de sort d'URL.
Voici la chaîne de caractères à utiliser : 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
J'en est besoin pour convertir un nombre afin de générer un ID court pour un script de sort d'URL.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
$chaine * rang($lettre)
$chaine % 62 dans $alphabet
$alphabet = 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
https://www.dcode.fr/conversion-base-n
$chaine % 62 dans $alphabet
$alphabet = 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
https://www.dcode.fr/conversion-base-n
phpguru
Messages postés
1
Date d'inscription
jeudi 23 juin 2011
Statut
Membre
Dernière intervention
23 juin 2011
23 juin 2011 à 11:59
23 juin 2011 à 11:59
Bonjour, voici un bon article résumant bien la situation et qui répondra à vos questions :
http://geoffray.be/blog/php/convertir-des-nombres-en-base-62
http://geoffray.be/blog/php/convertir-des-nombres-en-base-62
17 nov. 2010 à 14:38
C'est là que je m'en veux de ne pas avoir pris des cours de maths au cégep ! :-)