随机生成汉字类-C#编程
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):





























