C#应用程序实现随即产生4个汉字(源码)主要用于注册时的验证

 

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class ChineseCode
    {
        static void Main(string[] args)
        {
            Encoding gb = Encoding.GetEncoding("gb2312");//GB2312表
            object[] bytes = CreateRegionCode(4);
            //根据编码获取中文汉字
            string s1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
            string s2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
            string s3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
            string s4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));

            Console.WriteLine(s1 + s2 + s3 + s4);
        }

        public static object[] CreateRegionCode(int strlength)
        {
            //定义一个数组存储编码元素
            string[] rBase =new String[16]{"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
            Random rnd = new Random();
            //定义一个OBJECT 数组
            object[] bytes = new object[strlength];
            //循环数组 组成第一个元素
            for (int i = 0; i < strlength; i++)
            {
                int r1 = rnd.Next(11, 14);//第一位
                string str_r1 = rBase[r1].Trim();
                //更新随机数 获取第二位
                rnd = new Random(r1 * unchecked((int)DateTime.Now.Ticks) + i);
                int r2;
                if (r1 == 13)
                {
                    r2 = rnd.Next(0, 7);
                }
                else
                {
                    r2 = rnd.Next(0, 16);

                }
                string str_r2 = rBase[r2].Trim();

                //更新随即数 获取区位第三位
                rnd =new Random(r2*unchecked((int)DateTime.Now.Ticks)+i);
                int r3 = rnd.Next(10,16);
                string str_r3=rBase[r3].Trim();

                //更新随机数 获取区位第四位

                rnd = new Random(r3 * unchecked((int)DateTime.Now.Ticks) + i);
                int r4;
                if(r3==10)
                {
                    r4= rnd.Next(1,16);
                }else if(r3==15)
                {
                    r4=rnd.Next(0,15);
                }
                else
                {
                    r4 = rnd.Next(0, 16);
                }
                string str_r4 = rBase[r4].Trim();
                // 组合2个字节产生随机汉字区位码
                byte byte1 = Convert.ToByte(str_r1 + str_r2,16);
                byte byte2 = Convert.ToByte(str_r3 + str_r4,16);

                //存储大字节数组中
                byte[] str_r = new byte[] { byte1, byte2 };

                //将产生的一个汉字的字节数组放入OBJECT数组中
                bytes.SetValue(str_r, i);
               
            }
           
            return bytes;
                  
        }

 

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值