الوحدات الصغيرة
صغيرة ولكن من الممكن أن تكون حلاً مفيداً لمشكلة كنت أواجهها تحديداً، كيفية توليد واجهة من إدخال سلسلة نصية حيث أن المسند صالح دائماً لكنه فريد لأي سلسلة إدخال.
إحتجتُ إلى هذا من أجل مولد مولدات RSSSSS حيث أردت توليد نموذج لكل عنصر في التلقيم والذي كان قابلاً للتكرار وفريداً لكل عنصر.
واتضح أن XxHash128 هو نوع من الكمال لهذا كما أنه يعطي دائما a 128 بت (أو 16 بايت) hash. هذا يعني أنّه يمكن استخدامه لتوليد رمز تعريفي من مدخل سلسلة نصي بدون 'array'. koby through.
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();
}
هذه طريقة بسيطة للتمديد التي تأخذ إدخال سلسلة نصية وترجع داليد. الـ XxHash128 من System.IO.Hashing مُهمّة مكانيّة.
يمكنك بطبيعة الحال استخدام أي خوارزمية الهامش التي تعطي هاش 128 بت. الـ XxHash128 هو مجرد اختيار جيد كما أنه سريع ويعطي توزيع جيد لقيم البعثرة.
يمكنك أيضاً أن تعيد new Guid(<string>) من هذا للحصول على دليل فعلي يمكن استخدامه في قاعدة بيانات أو غير ذلك من حالات الاستخدام المحدد للخطوط التوجيهية.