Guid-muodossa oleva merkkijono merkkijonon tulolaajennuksesta. (Suomi (Finnish))

Guid-muodossa oleva merkkijono merkkijonon tulolaajennuksesta.

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.

Friday, 13 September 2024

//

1 minute read

Pienet postit FTW

Pieni mutta mahdollisesti hyödyllinen ratkaisu ongelmaan, joka minulla oli. Erityisesti, miten luoda GUID merkkijono syötöstä, jossa Guid on aina pätevä, mutta ainutlaatuinen minkä tahansa syötejon kohdalla.

Tarvitsin tätä omaani varten. RSS-syötegeneraattori Jossa halusin luoda jokaiselle syötteessä olevalle esineelle GUID:n, joka oli toistettavissa mutta ainutlaatuinen jokaiselle esineelle.

Kävi ilmi, että XxHash128 on tavallaan täydellinen tähän, koska se antaa aina 128 bittiä (tai 16 Byte) hasista. Tämä tarkoittaa, että sitä voidaan käyttää GUID:n tuottamiseen merkkijonon syötöstä ilman Arrayta.Copy-hölynpölyä.

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

Tämä on yksinkertainen laajennusmenetelmä, joka vie merkkijonon syötteeseen ja palauttaa GUIDin. Erytropoietiini XxHash128 on peräisin System.IO.Hashing namespace.

Voit tietysti käyttää mitä tahansa hashing-algoritmia, joka antaa 128 bittiä hashia. Erytropoietiini XxHash128 on vain hyvä valinta, koska se on nopea ja antaa hyvän hasisarvojen jakautumisen.

Voit myös palauttaa new Guid(<string>) Tästä saat varsinaisen Guidin, jota voi käyttää tietokannassa tai muissa GUID-erityiskäyttötapauksissa.

logo

©2024 Scott Galloway