GUID轉換

獠牙發表於2024-06-28

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


相關文章