Guid Format String aus einer String-Eingabe-Erweiterung. (Deutsch (German))

Guid Format String aus einer String-Eingabe-Erweiterung.

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

//

Less than a minute

Kleine Posts FTW

Kleine, aber potenziell nützliche Lösung für ein Problem, das ich hatte. Nämlich, wie man eine GUID aus einem String-Eingang generiert, bei dem der Guid immer gültig ist, aber für einen beliebigen Input-String eindeutig ist.

Ich brauchte das für meine RSS-Feed-Generator wo ich für jedes Element im Feed eine GUID generieren wollte, die aber für jedes Element wiederholbar war.

Es stellt sich heraus, dass die XxHash128 ist irgendwie perfekt dafür, da es immer ein 128 bit (oder 16 Byte) Hash gibt. Dies bedeutet, dass es verwendet werden kann, um eine GUID aus einem String-Eingang ohne 'Array' zu generieren.Kopieren Sie Unsinn.

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

Dies ist eine einfache Erweiterungsmethode, die eine String-Eingabe benötigt und eine GUID zurückgibt. Das XxHash128 ist aus der System.IO.Hashing Namespace.

Sie können natürlich jeden Hashing-Algorithmus verwenden, der einen 128 Bit Hash gibt. Das XxHash128 ist nur eine gute Wahl, da es schnell ist und gibt eine gute Verteilung der Hash-Werte.

Sie könnten auch eine new Guid(<string>) aus diesem, um eine tatsächliche Guid zu erhalten, die in einer Datenbank oder anderen GUID spezifischen Anwendungsfällen verwendet werden kann.

logo

©2024 Scott Galloway