发布:2021/6/18 23:46:33作者:管理员 来源:本站 浏览次数:1152
一、生成各种格式的32位GUID
System.Guid.NewGuid().ToString()全球唯一标识符 (GUID是微软对UUID的标准实现)
(GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用GUID。
①GUID的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID值。
②GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID
应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
③Guid.NewGuid()是指生成唯一码的规则
System.Guid.NewGuid().ToString(format);
说明符 返回值的格式N 32位字符:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxD 由连字符分隔的 32 位数字:
-
/// <summary>
-
/// 获取GUID的方法(默认是有连接符的32位数字)
-
/// </summary>
-
/// <param name="gUIDType">GUID的生成类型</param>
-
/// <returns>返回GUID的字符串</returns>
-
public string GetGUID(GUIDType gUIDType=GUIDType.D)
-
{
-
string tmpGUID=string.Empty;
-
switch (gUIDType)
-
{
-
case GUIDType.N:
-
//标识符N的生成格式(没有连接符的32位数字)
-
tmpGUID = Guid.NewGuid().ToString(GUIDType.N.ToString());
-
break;
-
case GUIDType.D:
-
//标识符N的生成格式(有连接符的32位数字)
-
tmpGUID = Guid.NewGuid().ToString(GUIDType.D.ToString());
-
break;
-
case GUIDType.B:
-
//标识符N的生成格式(有连接符和花括号的32位数字)
-
tmpGUID = Guid.NewGuid().ToString(GUIDType.B.ToString());
-
break;
-
case GUIDType.P:
-
//标识符N的生成格式(有连接符和括号的32位数字)
-
tmpGUID = Guid.NewGuid().ToString(GUIDType.P.ToString());
-
break;
-
case GUIDType.X:
-
//标识符N的生成格式(四个十六进制值用大括号括起来,其中第四个值是八个十六进制值的子集,这些值也用大括号括起来)
-
tmpGUID = Guid.NewGuid().ToString(GUIDType.X.ToString());
-
break;
-
default:
-
break;
-
}
-
return tmpGUID;
-
}
-
-
//五种生成GUID的枚举
-
public enum GUIDType
-
{
-
N,
-
D,
-
B,
-
P,
-
X,
-
}
二、生成16位GUID
-
/// <summary>
-
/// 根据GUID生成16位的唯一ID
-
/// </summary>
-
/// <returns></returns>
-
public string GUIDTO16()
-
{
-
long lg = 1;
-
foreach (byte b in Guid.NewGuid().ToByteArray())
-
{
-
lg *= ((int)b+1);
-
}
-
string tmp = string.Format("{0:x}",lg-DateTime.Now.Ticks);
-
return tmp;
-
}
三、生成22位的唯一数字,并发可用
-
/// <summary>
-
/// 生成22位的唯一数字,并发可用
-
/// </summary>
-
/// <returns></returns>
-
public string GetUniqueIDTO22()
-
{
-
System.Threading.Thread.Sleep(1);
-
//保证yyyyMMddHHmmssffff唯一
-
Random rd = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(),0));
-
string strUniqueID = DateTime.Now.ToString("yyyyMMddHHmmssffff")+rd.Next(1000,9999);
-
return strUniqueID;
-
}
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4