Σκελετός μορφής Guid από μια επέκταση εισαγωγής συμβολοσειρών. ( ελληνικά (Greek_)

Σκελετός μορφής Guid από μια επέκταση εισαγωγής συμβολοσειρών.

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

Μικρές θέσεις FTW

Μικρή αλλά ενδεχομένως χρήσιμη λύση σε ένα πρόβλημα που είχα. Δηλαδή, πώς να δημιουργήσετε ένα GUID από μια συμβολοσειρά εισόδου όπου η Guid είναι πάντα έγκυρη αλλά μοναδική για κάθε δεδομένη συμβολοσειρά εισόδου.

Το χρειαζόμουν αυτό για μένα. γεννήτρια τροφοδοσίας RSS όπου ήθελα να δημιουργήσω ένα GUID για κάθε αντικείμενο στην τροφή που ήταν επαναλαμβανόμενο αλλά μοναδικό για κάθε αντικείμενο.

Από ό,τι φαίνεται... XxHash128 είναι κάπως τέλειο για αυτό, καθώς δίνει πάντα 128 bit (ή 16 Byte) hash. Αυτό σημαίνει ότι μπορεί να χρησιμοποιηθεί για τη δημιουργία ενός GUID από μια συμβολοσειρά εισόδου χωρίς 'Array'.Copy ανοησίες.

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

Αυτή είναι μια απλή μέθοδος επέκτασης που παίρνει μια συμβολοσειρά εισόδου και επιστρέφει ένα GUID. Η XxHash128 είναι από το System.IO.Hashing Διάστημα ονομάτων.

Μπορείτε φυσικά να χρησιμοποιήσετε κάθε αλγόριθμο hashing που δίνει ένα 128 κομμάτι χασίς. Η XxHash128 είναι απλά μια καλή επιλογή καθώς είναι γρήγορη και δίνει μια καλή κατανομή των αξιών χασίς.

Θα μπορούσατε επίσης να επιστρέψετε ένα new Guid(<string>) από αυτό για να πάρετε μια πραγματική Guid που μπορεί να χρησιμοποιηθεί σε μια βάση δεδομένων ή άλλες ειδικές περιπτώσεις χρήσης GUID.

logo

©2024 Scott Galloway