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

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

C#

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

Wednesday, 07 August 2024

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