生成唯一值的方法很多,下面就不同环境下生成的唯一标识方法一一介绍,作为工作中的一次总结,有兴趣的可以自行测试:
一、在 .NET 中生成
1、直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛。GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计算机都不会生成重复的 GUID 值(即保证所有机器都是唯一的)。关于GUID的介绍在此不作具体熬述,想深入了解可以自行查阅MSDN。代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 namespace ConsoleApplication1 6 { 7 class Program 8 { 9 static void Main(string[] args) 10 { 11 string _guid = GetGuid(); 12 Console.WriteLine("唯一码:{0}\t长度为:{1}\n去掉连接符:{2}", _guid, _guid.Length, _guid.Replace("-", "")); 13 string uniqueIdString = GuidTo16String(); 14 Console.WriteLine("唯一码:{0}\t长度为:{1}", uniqueIdString, uniqueIdString.Length); 15 long uniqueIdLong = GuidToLongID(); 16 Console.WriteLine("唯一码:{0}\t长度为:{1}", uniqueIdLong, uniqueIdLong.ToString().Length); 17 } 18 /// <summary> 19 /// 由连字符分隔的32位数字 20 /// </summary> 21 /// <returns></returns> 22 private static string GetGuid() 23 { 24 System.Guid guid = new Guid(); 25 guid = Guid.NewGuid(); 26 return guid.ToString(); 27 } 28 /// <summary> 29 /// 根据GUID获取16位的唯一字符串 30 /// </summary> 31 /// <param name=\"guid\"></param> 32 /// <returns></returns> 33 public static string GuidTo16String() 34 { 35 long i = 1; 36 foreach (byte b in Guid.NewGuid().ToByteArray()) 37 i *= ((int)b + 1); 38 return string.Format("{0:x}", i - DateTime.Now.Ticks); 39 } 40 /// <summary> 41 /// 根据GUID获取19位的唯一数字序列 42 /// </summary> 43 /// <returns></returns> 44 public static long GuidToLongID() 45 { 46 byte[] buffer = Guid.NewGuid().ToByteArray(); 47 return BitConverter.ToInt64(buffer, 0); 48 } 49 } 50 }