重学c#系列—— 简单编写一个guid [娱乐篇]
前言
什么是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;
}
结
方式有很多,主要是要去实践,该篇非常简单,简明表示要去练,去思考,以此为记。