NOTE: Apart from
(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 maar potentieel nuttige oplossing voor een probleem dat ik had. Namelijk, hoe een GUID te genereren van een string input waar de Guid is altijd geldig maar uniek voor een bepaalde invoer string.
Ik had dit nodig voor mijnRSS-feedgeneratorwaar ik een GUID wilde genereren voor elk item in de feed dat herhaalbaar maar uniek was voor elk item.
Het blijkt dat deXxHash128
is hier een beetje perfect voor omdat het altijd een 128 bit (of 16 Byte) hash geeft. Dit betekent dat het gebruikt kan worden om een GUID te genereren uit een string input zonder 'Array'.
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();
}
Dit is een eenvoudige extensie methode die een string input neemt en een GUID teruggeeft.XxHash128
is van deSystem.IO.Hashing
namespace.
U kunt natuurlijk gebruik maken van elk hashing algoritme dat geeft een 128 bit hash.XxHash128
is gewoon een goede keuze als het is snel en geeft een goede verdeling van hash waarden.
U kunt ook eennew Guid(<string>)
van dit om een werkelijke Guid die kan worden gebruikt in een database of andere GUID specifieke gebruik gevallen te krijgen.