专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/14 0:49:46       共计:3626 浏览

一、生成各种格式的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 位数字: 
 

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


  1. /// <summary>
  2. /// 获取GUID的方法(默认是有连接符的32位数字)
  3. /// </summary>
  4. /// <param name="gUIDType">GUID的生成类型</param>
  5. /// <returns>返回GUID的字符串</returns>
  6. public string GetGUID(GUIDType gUIDType=GUIDType.D)
  7. {
  8. string tmpGUID=string.Empty;
  9. switch (gUIDType)
  10. {
  11. case GUIDType.N:
  12. //标识符N的生成格式(没有连接符的32位数字)
  13. tmpGUID = Guid.NewGuid().ToString(GUIDType.N.ToString());
  14. break;
  15. case GUIDType.D:
  16. //标识符N的生成格式(有连接符的32位数字)
  17. tmpGUID = Guid.NewGuid().ToString(GUIDType.D.ToString());
  18. break;
  19. case GUIDType.B:
  20. //标识符N的生成格式(有连接符和花括号的32位数字)
  21. tmpGUID = Guid.NewGuid().ToString(GUIDType.B.ToString());
  22. break;
  23. case GUIDType.P:
  24. //标识符N的生成格式(有连接符和括号的32位数字)
  25. tmpGUID = Guid.NewGuid().ToString(GUIDType.P.ToString());
  26. break;
  27. case GUIDType.X:
  28. //标识符N的生成格式(四个十六进制值用大括号括起来,其中第四个值是八个十六进制值的子集,这些值也用大括号括起来)
  29. tmpGUID = Guid.NewGuid().ToString(GUIDType.X.ToString());
  30. break;
  31. default:
  32. break;
  33. }
  34. return tmpGUID;
  35. }
  36. //五种生成GUID的枚举
  37. public enum GUIDType
  38. {
  39. N,
  40. D,
  41. B,
  42. P,
  43. X,
  44. }

二、生成16位GUID  


  1. /// <summary>
  2. /// 根据GUID生成16位的唯一ID
  3. /// </summary>
  4. /// <returns></returns>
  5. public string GUIDTO16()
  6. {
  7. long lg = 1;
  8. foreach (byte b in Guid.NewGuid().ToByteArray())
  9. {
  10. lg *= ((int)b+1);
  11. }
  12. string tmp = string.Format("{0:x}",lg-DateTime.Now.Ticks);
  13. return tmp;
  14. }

三、生成22位的唯一数字,并发可用


  1. /// <summary>
  2. /// 生成22位的唯一数字,并发可用
  3. /// </summary>
  4. /// <returns></returns>
  5. public string GetUniqueIDTO22()
  6. {
  7. System.Threading.Thread.Sleep(1);
  8. //保证yyyyMMddHHmmssffff唯一
  9. Random rd = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(),0));
  10. string strUniqueID = DateTime.Now.ToString("yyyyMMddHHmmssffff")+rd.Next(1000,9999);
  11. return strUniqueID;
  12. }
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:EF应用一:Code First模式 | ·下一条:AutoMapper简明教程

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有