zoukankan      html  css  js  c++  java
  • C# 16位GUID

    摘自: http://www.cnblogs.com/lcwzj/archive/2009/04/16/1436992.html

    当我们想要获得一个唯一的key的时候,通常会想到GUID。这个key非常的长,虽然我们在很多情况下这并不是个问题。但是当我们需要将这个36个字符的字符串放在URL中时,会使的URL非常的丑陋。

          想要缩短GUID的长度而不牺牲它的唯一性是不可能的,但是如果我们能够接受一个16位的字符串的话是可以做出这个牺牲的。

          我们可以将一个标准的GUID 21726045-e8f7-4b09-abd8-4bcc926e9e28  转换成短的字符串 3c4ebc5f5f2c4edc

          下面的方法会生成一个短的字符串,并且这个字符串是唯一的。重复1亿次都不会出现重复的,它也是依照GUID的唯一性来生成这个字符串的。

            private string GenerateStringID()
            {
                long i = 1;
                foreach (byte b in Guid.NewGuid().ToByteArray())
                {
                    i *= ((int)b + 1);
                }
                return string.Format("{0:x}", i - DateTime.Now.Ticks);
            }

          如果你想生成一个数字序列而不是字符串,你将会获得一个19位长的序列。下面的方法会把GUID转换为Int64的数字序列。

            private long GenerateIntID()
            {
                byte[] buffer = Guid.NewGuid().ToByteArray();
                return BitConverter.ToInt64(buffer, 0);
            }

     

    摘自: http://blog.csdn.net/smartsmile2012/article/details/7899212

    /// <summary>  
    /// 根据GUID获取16位的唯一字符串  
    /// </summary>  
    /// <param name="guid"></param>  
    /// <returns></returns>  
    public static string GuidTo16String()  
    {  
        long i = 1;  
        foreach (byte b in Guid.NewGuid().ToByteArray())  
            i *= ((int)b + 1);  
        return string.Format("{0:x}", i - DateTime.Now.Ticks);  
    }  
    /// <summary>  
    /// 根据GUID获取19位的唯一数字序列  
    /// </summary>  
    /// <returns></returns>  
    public static long GuidToLongID()  
    {  
        byte[] buffer = Guid.NewGuid().ToByteArray();  
        return BitConverter.ToInt64(buffer, 0);  
    } 
  • 相关阅读:
    IOS开发——01_第一个OC程序
    01_iOS开发需要准备什么?
    正则表达式随笔
    .net4.6版本前设置window子窗口位置主窗口闪烁
    [CF1486D] Max Median
    [CF1487D] Pythagorean Triples
    [CF1487E] Cheap Dinner
    [CF1490E] Accidental Victory
    [CF1490F] Equalize the Array
    [CF1490G] Old Floppy Drive
  • 原文地址:https://www.cnblogs.com/wuyifu/p/3146018.html
Copyright © 2011-2022 走看看