वाक्यांश इनपुट विस्तार से गुरूड फ़ॉर्मेट.
छोटे पोस्ट FTW
एक समस्या के लिए मुझे बहुत कम लेकिन उपयोगी समाधान मिल रहा था । नाम, वाक्यांश इनपुट से जीयूआईD कैसे तैयार करें जहाँ जीआईडी हमेशा वैध होता है परंतु किसी भी इनपुट वाक्यांश के लिए विशिष्ट होता है.
मैं अपने लिए इस की जरूरत है RSS फीड जेनरेटर जहाँ मैं भोजन में प्रत्येक वस्तु के लिए जीयूआई अनुप्रयोग बनाना चाहता था जो दोहरायी जा सकती थी लेकिन प्रत्येक वस्तु के लिए अद्वितीय था.
यह पता चला है कि XxHash128 इसके लिए कृपालुता है क्योंकि यह हमेशा एक 128 बिट (या 16 बाइट) Oh देता है. इसका अर्थ है कि इसे बिना 'एरे' के वाक्यांश इनपुट से एक जीयूआई डीडी तैयार करने के लिए इस्तेमाल किया जा सकता है। बकवास।
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 बिट हैh देता है. वह XxHash128 सिर्फ एक अच्छा विकल्प है जैसे यह तेजी से है और हैश मूल्यों का एक अच्छा वितरण देता है.
आप भी एक वापसी कर सकते हैं new Guid(<string>) इस से वास्तविक Gidid प्राप्त करने के लिए जिसे एक डेटाबेस या अन्य जीयूआई विशिष्ट मामलों में प्रयोग किया जा सकता है.