histograma - plot histogram python
Convierte int a ASCII y vuelve a Python (5)
¿Qué pasa con BASE58 que codifica la URL? Como por ejemplo flickr hace.
# note the missing lowercase L and the zero etc.
BASE58 = ''123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ''
url = ''''
while node_id >= 58:
div, mod = divmod(node_id, 58)
url = BASE58[mod] + url
node_id = int(div)
return ''http://short.com/%s'' % BASE58[node_id] + url
Convertir eso de nuevo en un número tampoco es gran cosa.
Estoy trabajando para crear un acortador de URL para mi sitio, y mi plan actual (estoy abierto a sugerencias) es usar una ID de nodo para generar la URL acortada. Entonces, en teoría, el nodo 26 podría ser short.com/z
, el nodo 1 podría ser short.com/a
, el nodo 52 podría ser short.com/Z
, y el nodo 104 podría ser short.com/ZZ
. Cuando un usuario va a esa URL, necesito revertir el proceso (obviamente).
Puedo pensar en algunas formas complicadas de hacerlo, pero supongo que hay otras mejores. ¿Alguna sugerencia?
ASCII a int:
ord(''a'')
da 97
Y volviendo a una cadena:
str(unichr(97))
da ''a''
Si varios caracteres están enlazados dentro de un solo entero / largo, como era mi problema:
s = ''0123456789''
nchars = len(s)
# string to int or long. Type depends on nchars
x = sum(ord(s[byte])<<8*(nchars-byte-1) for byte in range(nchars))
# int or long to string
''''.join(chr((x>>8*(nchars-byte-1))&0xFF) for byte in range(nchars))
Rendimientos ''0123456789''
x = 227581098929683594426425L
Use hex(id)[2:]
e int(urlpart, 16)
. Hay otras opciones La codificación de base32 de su ID también podría funcionar, pero no sé si hay alguna biblioteca que tenga codificación base32 integrada en Python.
Aparentemente, se introdujo un codificador base32 en Python 2.4 con el módulo base64 . Puede intentar usar b32encode
y b32decode
. Debe dar True
para las opciones de casefold
y map01
para b32decode
en caso de que las personas escriban sus URL acortadas.
En realidad, retiro eso. Sigo pensando que la codificación de base32 es una buena idea, pero ese módulo no es útil para el caso de acortamiento de URL. Puede ver la implementación en el módulo y hacer la suya para este caso específico. :-)
>>> ord("a")
97
>>> chr(97)
''a''