/// <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