Quiero crear un GUID corto. ¿Hay alguna forma de crear un código corto único como corto GUID? Quiero crear un número de seguimiento de boletos.¿Hay alguna manera de crear un código corto único como corto GUID?
Respuesta
Jeff Atwood tiene un artículo en su blog cómo acortar un GUID de 20 caracteres sin perder información:
Coding Horror: Equipping our ASCII Armor
realmente depende de su uso.
Por ejemplo, si los generara a un ritmo inferior a 1 por segundo, podría simplemente incrementar un int de 32 bits (1/4 del tamaño de un GUID de 128 bits). Eso te duraría un poco más de 68 años a razón de 1 por segundo.
Si calcula su uso, debería ser bastante simple calcular el tamaño mínimo que puede obtener. También dependerá de si desea poder generarlos en cualquier lugar, o si serán generados por un único servidor o pieza de software.
Pruebe Base 36, para obtener un número único todo lo que tiene que hacer es usar un número automático y guardarlo como Base36. Sin embargo, para que sean aleatorios, necesitarás algo más.
Lo que haré es, hash o encriptar el número de ticket como código de seguimiento de tickets. código como,
code = Base36(MD5(ticketID+"my secrete"));
Si usted quiere el seguimiento sea único, entonces voy a cifrar con algunas teclas.
La longitud del GUID es de 128bits (16bytes), por lo que si desea crear un GUID corto, debe cambiar la codificación del GUID.
Por ejemplo, puede usuario base64 o ASCII85.
/// <summary>
/// Creates a GUID which is guaranteed not to equal the empty GUID
/// </summary>
/// <returns>A string</returns>
public static string CreateGuid()
{
Guid guid = Guid.Empty;
while (Guid.Empty == guid)
{
guid = Guid.NewGuid();
}
// Uses base64 encoding the guid.(Or ASCII85 encoded)
// But not recommend using Hex, as it is less efficient.
return Convert.ToBase64String(guid.ToByteArray());
}
única dentro de un año, de forma visible 'al azar'
string UniqueID()
{
var t = DateTime.UtcNow;
long dgit = t.Millisecond * 1000000000L +
t.DayOfYear * 1000000L +
t.Hour * 10000L +
t.Minute * 100L +
t.Second;
return Convert.ToBase64String(BitConverter.GetBytes(dgit).Take(5).ToArray()).TrimEnd('=');
}
aquí está uno con un personaje personalizable establecer
string UniqueID(string CharList = "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
{
var t = DateTime.UtcNow;
char[] charArray = CharList.ToCharArray();
var result = new Stack<char>();
var length = charArray.Length;
long dgit = 1000000000000L +
t.Millisecond * 1000000000L +
t.DayOfYear * 1000000L +
t.Hour * 10000L +
t.Minute * 100L +
t.Second;
while (dgit != 0)
{
result.Push(charArray[dgit % length]);
dgit /= length;
}
return new string(result.ToArray());
}
se está acabando el tiempo ..... –
- 1. Shortcodes dentro de un código corto - wordpress
- 2. Cómo imprimo un corto como un corto sin firmar en Java
- 3. Excluir the_post_thumbnail de la galería código corto
- 4. ¿Cómo crear un valor corto de hash simple? C#
- 5. Corto IF - declaración ELSE
- 6. ¿Cómo puedo obtener corto [] de un ByteBuffer
- 7. Configuración Valor corto Java
- 8. C# SqlParameters Mano corto
- 9. Añadiendo int al corto
- 10. sufijo del Número de corto
- 11. SSE Instrucciones: Byte + Corto
- 12. Código más corto para este enunciado "si" de JavaScript
- 13. ¿Por qué se implementa CompareTo en corto de esta manera?
- 14. ¿Hay alguna forma de establecer un título corto por separado para UITabBar?
- 15. generar un número aleatorio corto en java?
- 16. Cómo desenrollar un bucle corto en C++
- 17. Margen de datos demasiado corto
- 18. convertir una cadena a un corto
- 19. Sobrecarga con Corto e int
- 20. Menú contextual por clic corto
- 21. cambiar apariencia de código corto en wordpress editor de tinymce
- 22. sinónimo más corto para el valor predeterminado
- 23. Cómo crear una función de estilo de código corto de Wordpress en PHP
- 24. Nombres variables Lambda - ¿para nombre corto o no para nombre corto?
- 25. Acrónimo de espacio de nombres corto en ruby
- 26. ¿Hay alguna manera de volver a abrir un socket?
- 27. Corto Tiempo Transformada de Fourier en Python
- 28. Convierta de manera eficiente un corto sin signo en un char *
- 29. Convertir corto a byte [] en Java
- 30. ¿El hash de un GUID es único?
Cuanto más corto es, cuanto menos singular que es (señalando que Guid no es realmente "único"). ¿Qué corto? y podría provenir de, digamos, una clave de identidad de la base de datos? –
¿Hay algún motivo por el que un GUID no funcione? –
¿Qué tal si utilizas partes de un guid? –