Cadena de formato de guía de una extensión de entrada de cadena. (Español (Spanish))

Cadena de formato de guía de una extensión de entrada de cadena.

Comments

NOTE: Apart from English (and even then it's questionable, I'm Scottish). These are machine translated in languages I don't read. If they're terrible please contact me.
You can see how this translation was done in this article.

Wednesday, 07 August 2024

//

1 minute read

Puestos pequeños FTW

Pequeña pero potencialmente útil solución a un problema que estaba teniendo. Es decir, cómo generar un GUID a partir de una entrada de cadena donde el Guid es siempre válido pero único para cualquier cadena de entrada dada.

Necesitaba esto para mi Generador de alimentación RSS donde quería generar una GUIA para cada elemento en la fuente que era repetible pero único para cada elemento.

Resulta que la XxHash128 es un poco perfecto para esto, ya que siempre da un hachís de 128 bits (o 16 bytes). Esto significa que se puede utilizar para generar un GUID a partir de una entrada de cadena sin 'Array'.Copiar tonterías.

     public  static string ToGuid(this string  name)
    {
        var buf = Encoding.UTF8.GetBytes(name);
        var guid = XxHash128.Hash(buf);
        var guidS =  string.Format("{0:X2}{1:X2}{2:X2}{3:X2}-{4:X2}{5:X2}-{6:X2}{7:X2}-{8:X2}{9:X2}-{10:X2}{11:X2}{12:X2}{13:X2}{14:X2}{15:X2}", 
            guid[0], guid[1], guid[2], guid[3], guid[4], guid[5], guid[6], guid[7], guid[8], guid[9], guid[10], guid[11], guid[12], guid[13], guid[14], guid[15]);
        return guidS.ToLowerInvariant();
    }

Este es un método de extensión simple que toma una entrada de cadena y devuelve una GUID. Los XxHash128 es de la System.IO.Hashing espacio de nombres.

Usted puede, por supuesto, utilizar cualquier algoritmo de hashing que da un hash de 128 bits. Los XxHash128 es sólo una buena opción, ya que es rápido y da una buena distribución de valores de hash.

También podría devolver un new Guid(<string>) de esto para obtener un Guid real que se puede utilizar en una base de datos u otros casos de uso específicos de GUID.

logo

©2024 Scott Galloway