C#生成18位以内的唯一的纯数字

本文介绍了一种利用13位时间戳结合随机数在C#中生成18位以内唯一纯数字的方法,确保ID的独特性。

方法:使用13位的当前时间的时间戳,在加上几个随机数

public static string GetTimestamp()
        {
            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);//ToUniversalTime()转换为标准时区的时间,去掉的话直接就用北京时间
            //随机数
            string strRandomResult = NextRandom(1000, 1).ToString();

            string randonTime=(long)ts.TotalMilliseconds+ strRandomResult;//13位当前时间戳+4位随机数
            return randonTime; 
        }

        public static int NextRandom(int numSeeds, int length)
        {
            // Create a byte array to hold the random value.  
            byte[] randomNumber = new byte[length];
             // Create a new instance of the RNGCryptoServiceProvider.  
             System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
            // Fill the array with a random value.  
            rng.GetBytes(randomNumber);
            // Convert the byte to an uint value to make the modulus operation easier.  
            uint randomResult = 0x0;
             for (int i = 0; i<length; i++)
            {
                 randomResult |= ((uint) randomNumber[i] << ((length - 1 - i) * 8));
             }
             return (int) (randomResult % numSeeds) + 1;
        }

运行结果(最后三位为随机数):
这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值