C#中Guid.ToString (String)五种格式,以及将32位的GUID转为16位及其他格式

注意:本内容来自:C#中Guid.ToString Method (String)五种格式,以及将将32位的GUID转为16位及其他格式

一、生成各种格式的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 位数字: 
 C#中Guid.ToString (String)五种格式,以及将32位的GUID转为16位及其他格式_第1张图片

该图来自:https://docs.microsoft.com/en-us/dotnet/api/system.guid.tostring?redirectedfrom=MSDN&view=netframework-4.8#System_Guid_ToString_System_String

        /// 
        /// 获取GUID的方法(默认是有连接符的32位数字)
        /// 
        /// GUID的生成类型
        /// 返回GUID的字符串
        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  

        /// 
        /// 根据GUID生成16位的唯一ID
        /// 
        /// 
        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位的唯一数字,并发可用

        /// 
        /// 生成22位的唯一数字,并发可用
        /// 
        /// 
        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;
        }

 

 

你可能感兴趣的:(C#基)