Chaîne de format Guid à partir d'une extension d'entrée de chaîne. (Français (French))

Chaîne de format Guid à partir d'une extension d'entrée de chaîne.

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

//

2 minute read

Petits postes FTW

Une solution petite mais potentiellement utile à un problème que j'avais. À savoir, comment générer un GUID à partir d'une entrée de chaîne où la Guid est toujours valide mais unique pour toute chaîne d'entrée donnée.

J'avais besoin de ça pour mon Générateur de flux RSS où je voulais générer un GUID pour chaque élément du flux qui était répétable mais unique pour chaque élément.

Il s'avère que les XxHash128 est un peu parfait pour cela car il donne toujours un hachage de 128 bits (ou 16 octets). Cela signifie qu'il peut être utilisé pour générer un GUID à partir d'une entrée de chaîne sans 'Array'.

     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();
    }

Il s'agit d'une méthode d'extension simple qui prend une entrée de chaîne et renvoie un GUID. Les XxHash128 est de la System.IO.Hashing Espace de noms.

Vous pouvez bien sûr utiliser n'importe quel algorithme de hachage qui donne un hachage 128 bits. Les XxHash128 est juste un bon choix car il est rapide et donne une bonne distribution des valeurs de hachage.

Vous pourriez aussi retourner un new Guid(<string>) à partir de cela pour obtenir un Guid réel qui peut être utilisé dans une base de données ou d'autres cas d'utilisation spécifiques GUID.

logo

©2024 Scott Galloway