重学c#系列—— 简单编写一个guid [娱乐篇]

发布时间 2023-04-11 00:39:48作者: 敖毛毛

前言

什么是guid?

全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2128(3.4×1038)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。

正文

那么如何自己编写一个guid。

static void Main(string[] args)
{
	var  guid = GenGuid("123");
	Console.WriteLine(guid);
	Console.Read();
}

static string GenGuid(string name)
{
	var buff = System.Text.Encoding.UTF8.GetBytes(name);
	var guid = new byte[16];
	if (buff.Length < 16)
	{
		Array.Copy(buff, guid, buff.Length);
	}
	else
	{
		using (SHA1 s1 = SHA1.Create(name))
		{
			Array.Copy(s1.Hash, guid, 16);
		}
	}

	var format = string.Format("{0:x}{1:x}{2:x}{3:x}-{4:x}{5:x}-{6:x}{7:x}-{8:x}{9:x}-{10:x}{11:x}{12:x}{13:x}{14:x}{15:x}",  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 format;
}

方式有很多,主要是要去实践,该篇非常简单,简明表示要去练,去思考,以此为记。