.net工具类——获取编码(生成随机数)

Posted amusement1992

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net工具类——获取编码(生成随机数)相关的知识,希望对你有一定的参考价值。

 .net工具类——获取编码(生成随机数)

  1. GetNumber:获取编码。年月日+八位随机数
  2. GetNumber2:获取编码。随机数
  3. GenerateCode:获取编码。包含大写英文和数字、去掉字母I和O
  4. GetCodePerfix:获取编码的前缀,年月(格式如:AK,表示2018年11月)

 

        /// <summary>
        /// 获取编码。年月日+八位随机数
        /// </summary>
        /// <returns></returns>
        public static string GetNumber()
        {
            byte[] buffer = Guid.NewGuid().ToByteArray();
            var ram = BitConverter.ToInt64(buffer, 0);
            var str = string.Format("{0}{1}", Utils.GetRamCode2(), ram.ToString().Substring(0, 8));
            return str;

            //var str = string.Format("{0}{1}", Utils.GetRamCode2(), Utils.Number(6, true));
            //return str;
        }

        /// <summary>
        /// 获取编码。随机数
        /// </summary>
        /// <returns></returns>
        public static string GetNumber2(int Length)
        {
            byte[] buffer = Guid.NewGuid().ToByteArray();
            var ram = BitConverter.ToInt64(buffer, 0);
            var str = string.Format("{0}", ram.ToString().Substring(0, Length));
            return str;
        }

        /// <summary>
        /// 获取编码。年月日+八位随机数
        /// </summary>
        /// <returns></returns>
        public static string GetNumber(List<string> listNumber)
        {
            string Number = GetNumber();
            int i = 0;
            while (true)
            {
                ++i;
                if (listNumber.Contains(Number))
                {
                    Number = GetNumber();
                }
                else
                {
                    break;
                }

                if (i > 10)
                {
                    LogHelper.WriteLog("GetNumber已经执行了{i}次!");
                }

            }
            return Number;
        }

        /// <summary>
        /// 获取编码。随机数
        /// </summary>
        /// <returns></returns>
        public static string GetNumber2(int Length, List<string> listNumber)
        {
            string Number = GetNumber2(Length);
            int i = 0;
            while (true)
            {
                ++i;
                if (listNumber.Contains(Number))
                {
                    Number = GetNumber2(Length);
                }
                else
                {
                    break;
                }

                if (i > 10)
                {
                    LogHelper.WriteLog("GetNumber已经执行了{i}次!");
                }

            }
            return Number;
        }

        /// <summary>
        /// 包含大写英文和数字、去掉字母I和O
        /// </summary>
        private static char[] constant =
        {
        0,1,2,3,4,5,6,7,8,9,
        A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,V,W,X,Y,Z
        };

        /// <summary>
        /// 获取编码。包含大写英文和数字、去掉字母I和O
        /// </summary>
        /// <returns></returns>
        public static string GenerateCode(int Length)
        {
            Thread.Sleep(10);
            StringBuilder newRandom = new StringBuilder(34);
            Random rd = new Random();
            for (int i = 0; i < Length; i++)
            {
                newRandom.Append(constant[rd.Next(34)]);
            }
            return newRandom.ToString();
        }

        /// <summary>
        /// 获取编码。包含大写英文和数字、去掉字母I和O
        /// </summary>
        /// <returns></returns>
        public static string GenerateCode(int Length, List<string> listNumber)
        {
            string Number = GenerateCode(Length);
            int i = 0;
            while (true)
            {
                ++i;
                if (listNumber.Contains(Number))
                {
                    Number = GenerateCode(Length);
                }
                else
                {
                    break;
                }
                if (i > 10)
                {
                    LogHelper.WriteLog($"GenerateCode已经执行了{i}次!");
                }
            }
            return Number;
        }

        /// <summary>
        /// 获取编码的前缀,年月(格式如:AK,表示2018年11月)
        /// </summary>
        /// <returns></returns>
        public static string GetCodePerfix()
        {
            var dtNow = DateTime.Now;
            int thisYear = dtNow.Year;
            int thisMonth = dtNow.Month;

            int year = A + (thisYear - 2018);//从2018年开始
            int month = A + (thisMonth - 1);//从一月开始

            return (char)year + "" + (char)+month;
        }

 

以上是关于.net工具类——获取编码(生成随机数)的主要内容,如果未能解决你的问题,请参考以下文章

java开发常用工具类

java生成订单编号工具类

SpringBoot+Vue项目中实现登录验证码校验

Java常用工具类(计算MD5,验证码随机生成,天数差值计算)

java编码中怎样产生四位随机数

获取一个临时文件和对中文文件名字进行编码的工具类