随机生成汉字类-C#编程

来源:站长无忧 作者:站长 更新时间:2009-06-13 点击:

namespace CryptoAngelProfessional
{
    using System;
    using System.Text;

    public class ChineseFont
    {       
        public static object[] CreateRegionCode(int strlength)
        {
            //定义一个字符串数组储存汉字编码的组成元素
            string[] strArray = new string[] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
            Random random = new Random();
            //定义一个object数组用来
            object[] objArray = new object[strlength];
            /**/
            /*每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
         每个汉字有四个区位码组成
         区位码第1位和区位码第2位作为字节数组第一个元素
         区位码第3位和区位码第4位作为字节数组第二个元素
        */

            for (int i = 0; i < strlength; i++)
            {
                int num3;
                int num5;
                int index = random.Next(11, 14);
                string str = strArray[index].Trim();
                random = new Random((index * ((int)DateTime.Now.Ticks)) + i);
                if (index == 13)
                {
                    num3 = random.Next(0, 7);
                }
                else
                {
                    num3 = random.Next(0, 0x10);
                }
                string str2 = strArray[num3].Trim();
                random = new Random((num3 * ((int)DateTime.Now.Ticks)) + i);
                int num4 = random.Next(10, 0x10);
                string str3 = strArray[num4].Trim();
                random = new Random((num4 * ((int)DateTime.Now.Ticks)) + i);
                switch (num4)
                {
                    case 10:
                        num5 = random.Next(1, 0x10);
                        break;

                    case 15:
                        num5 = random.Next(0, 15);
                        break;

                    default:
                        num5 = random.Next(0, 0x10);
                        break;
                }
                string str4 = strArray[num5].Trim();
                //定义两个字节变量存储产生的随机汉字区位码
                byte num6 = Convert.ToByte(str + str2, 0x10);
                byte num7 = Convert.ToByte(str3 + str4, 0x10);
                //将两个字节变量存储在字节数组中
                byte[] buffer = new byte[] { num6, num7 };
                //将产生的一个汉字的字节数组放入object数组中
                objArray.SetValue(buffer, i);
            }
            return objArray;
        }

        /// <summary>
        /// 产生随机汉字,以string数组返回
        /// </summary>
        /// <param name="StrLength">产生汉字的个数</param>
        /// <returns></returns>
        public static string[] Fonts(int StrLength)
        {
            Encoding encoding = Encoding.GetEncoding("gb2312");
            object[] objArray = CreateRegionCode(StrLength);
            string[] strArray = new string[StrLength];
            for (int i = 0; i < StrLength; i++)
            {
                strArray[i] = encoding.GetString((byte[])Convert.ChangeType(objArray[i], typeof(byte[])));
            }
            return strArray;
        }
    }
}


标签(Tag):

    继续阅读C#编程
  • 上一篇:图片转化为字节流
  • 下一篇:没有了
  • 相关C#编程: