C#根据字符串生成唯一的数字

作者:互联网   出处:控件中国网   2014-11-05 19:21:42   阅读:1

C#根据字符串生成唯一的数字

    根据字符串生成唯一的数字标识, 一般我们都会采用GUID, 根据字符串计算MD5, 计算出来的MD5码就是一个GUID.

    但是GUID太长了, 是一个128位的数字, 在存储的时候, 会很占地方, 考虑能不能生成一个短一点的数字, 比如32为的数字, 搜了搜, 有人给出了这样的方法.

    : 我们可以将一个标准的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);
        }

Copyright© 2006-2015 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 渝ICP备12000264号 法律顾问:元炳律师事务所
客服软件
live chat