2009-08-14 13 views

Respuesta

10

Parece que solo hay 73 caracteres que se pueden usar sin guardar en una URL. Si ese es el caso, podrías convertir el número de 128 bits a la base 73 y tener una URL de 21 caracteres.

SI puede encontrar 85 caracteres legales, puede obtener una URL de hasta 20 caracteres.

+0

¿Estamos guardando 9 caracteres en la URL? Encuentro realmente más fácil leer/recitar el hexadecimal que algo como 00amyWGct0y_ze4lIsj2Mw – hometoast

+0

@hometoast: Sí, bueno, eso no parece ser una limitación para el OP. ;) – retracile

+1

Utilicé una codificación Ascii85 para escribir una columna Guid a una base de datos en 20 caracteres ASCII. He publicado el código de C# en caso de que sea útil. El conjunto de caracteres específico puede ser diferente para una codificación URL, pero puede elegir los caracteres que se adapten a su aplicación. Está disponible aquí: http://stackoverflow.com/questions/2827627/what-is-the-most-efficient-way-to-encode-an-arbitrary-guid-into-readable-ascii-3/4211088#4211088 – sheikhjabootie

5

Un GUID se parece a esto c9a646d3-9c61-4cb7-BFCD-ee2522c8f633 - que es de 32 dígitos hexadecimales, cada codificación de 4 bits, por lo que 128 bits en total

una codificación base64 utiliza 6 bits por símbolo, que es fácil para lograr con caracteres URL seguros para dar una cadena codificada de 22 caracteres. Como otros han notado, usted puede con 73 símbolos Url Safe y codificar como un número base 73 para dar 21 caracteres.

+0

¿Cómo obtuviste el bit "6 bits de un carácter URL-safe"? –

+0

No hay 127 caracteres URL seguros, por lo que se supone que 6 bits serían el máximo. –

+0

6 bits es base64, que fue el enlace original. Si puede obtener más de 64 caracteres, por ejemplo, 85, podría convertir el número de 128 bits en base 85 y obtener hasta 20 caracteres. Simplemente no será tan bueno como base64. – retracile

Cuestiones relacionadas