GUID转换成16位字符串或19位数据(确保唯一)

时间:2023-03-09 21:17:32
GUID转换成16位字符串或19位数据(确保唯一)
  1. // <summary>
  2. /// 根据GUID获取16位的唯一字符串
  3. /// </summary>
  4. /// <param name=\"guid\"></param>
  5. /// <returns></returns>
  6. public static string GuidTo16String()
  7. {
  8. long i = 1;
  9. foreach (byte b in Guid.NewGuid().ToByteArray())
  10. i *= ((int)b + 1);
  11. return string.Format("{0:x}", i - DateTime.Now.Ticks);
  12. }
  13. /// <summary>
  14. /// 根据GUID获取19位的唯一数字序列
  15. /// </summary>
  16. /// <returns></returns>
  17. public static long GuidToLongID()
  18. {
  19. byte[] buffer = Guid.NewGuid().ToByteArray();
  20. return BitConverter.ToInt64(buffer, 0);
  21. }
  1. /// <summary>
  2. /// 生成22位唯一的数字 并发可用
  3. /// </summary>
  4. /// <returns></returns>
  5. public static string GenerateUniqueID()
  6. {
  7. System.Threading.Thread.Sleep(1); //保证yyyyMMddHHmmssffff唯一
  8. Random d = new Random(BitConverter.ToInt32(Guid.NewGuid().ToByteArray(), 0));
  9. string strUnique = DateTime.Now.ToString("yyyyMMddHHmmssffff") + d.Next(1000, 9999);
  10. return strUnique;
  11. }