GUID转换
/// <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; }
原文链接:
https://blog.csdn.net/xiaochenXIHUA/article/details/104038369