C#生成唯一的字符串或者數字


  當我們想要獲得一個唯一的key的時候,通常會想到GUID。這個key非常的長,雖然我們在很多情況下這並不是個問題。但是當我們需要將這個36個字符的字符串放在URL中時,會使的URL非常的丑陋。

      想要縮短GUID的長度而不犧牲它的唯一性是不可能的,但是如果我們能夠接受一個16位的字符串的話是可以做出這個犧牲的。

      我們可以將一個標准的GUID 21726045-e8f7-4b09-abd8-4bcc926e9e28  轉換成短的字符串 3c4ebc5f5f2c4edc

      下面的方法會生成一個短的字符串,並且這個字符串是唯一的。重復1億次都不會出現重復的,它也是依照GUID的唯一性來生成這個字符串的。

      jihua.cnblogs.com

  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);

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM