Je travaille sur la création d'un raccourcisseur d'URL pour mon site, et mon plan actuel (je suis ouvert aux suggestions) est d'utiliser un identifiant de nœud pour générer l'URL raccourcie. Donc, en théorie, le nœud 26 pourrait être short.com/z
, le nœud 1 pourrait être short.com/a
, le nœud 52 pourrait être short.com/Z
et le nœud 104 pourrait être short.com/ZZ
. Lorsqu'un utilisateur accède à cette URL, je dois inverser le processus (évidemment).
Je peux penser à des moyens simples pour y parvenir, mais je suppose qu'il y en a de meilleurs. Aucune suggestion?
Réponses:
ASCII à int:
donne
97
Et revenons à une chaîne:
str(unichr(97))
chr(97)
donne
'a'
la source
la source
Si plusieurs caractères sont liés à l'intérieur d'un seul entier / long, comme ce fut mon problème:
Rendements
'0123456789'
etx = 227581098929683594426425L
la source
Qu'en est-il de l'encodage BASE58 de l'URL? Comme par exemple, flickr le fait.
Transformer cela en un nombre n'est pas non plus un gros problème.
la source
Utilisez
hex(id)[2:]
etint(urlpart, 16)
. Il existe d'autres options. l'encodage base32 de votre identifiant pourrait également fonctionner, mais je ne sais pas s'il existe une bibliothèque qui fait l'encodage base32 intégré à Python.Apparemment, un encodeur base32 a été introduit dans Python 2.4 avec le module base64 . Vous pouvez essayer d'utiliser
b32encode
etb32decode
. Vous devriez donnerTrue
à la fois les optionscasefold
etmap01
aub32decode
cas où les gens écrivent vos URL raccourcies.En fait, je reprends ça. Je pense toujours que l'encodage base32 est une bonne idée, mais ce module n'est pas utile dans le cas du raccourcissement d'URL. Vous pouvez regarder l'implémentation dans le module et créer la vôtre pour ce cas spécifique. :-)
la source