zoukankan
html css js c++ java
C#生成随机汉字
using
System;
using
System.Text;
namespace
ConsoleApplication
{
class
ChineseCode
{
public
static
void
Main()
{
//
获取GB2312编码页(表)
Encoding gb
=
Encoding.GetEncoding(
"
gb2312
"
);
//
调用函数产生4个随机中文汉字编码
object
[] bytes
=
CreateRegionCode(
4
);
//
根据汉字编码的字节数组解码出中文汉字
string
str1
=
gb.GetString((
byte
[]) Convert.ChangeType(bytes[
0
],
typeof
(
byte
[])));
string
str2
=
gb.GetString((
byte
[]) Convert.ChangeType(bytes[
1
],
typeof
(
byte
[])));
string
str3
=
gb.GetString((
byte
[]) Convert.ChangeType(bytes[
2
],
typeof
(
byte
[])));
string
str4
=
gb.GetString((
byte
[]) Convert.ChangeType(bytes[
3
],
typeof
(
byte
[])));
//
输出的控制台
Console.WriteLine(str1
+
str2
+
str3
+
str4);
}
/**/
/**/
/**/
/*
此函数在汉字编码范围内随机创建含两个元素的十六进制字节数组,每个字节数组代表一个汉字,并将
四个字节数组存储在object数组中。
参数:strlength,代表需要产生的汉字个数
*/
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];
/**/
/**/
/**/
/*
每循环一次产生一个含两个元素的十六进制字节数组,并将其放入bject数组中
每个汉字有四个区位码组成
区位码第1位和区位码第2位作为字节数组第一个元素
区位码第3位和区位码第4位作为字节数组第二个元素
*/
for
(
int
i
=
0
; i
<
strlength; i
++
)
{
//
区位码第1位
int
r1
=
rnd.Next(
11
,
14
);
string
str_r1
=
rBase[r1].Trim();
//
区位码第2位
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();
//
区位码第3位
rnd
=
new
Random(r2
*
unchecked
((
int
) DateTime.Now.Ticks)
+
i);
int
r3
=
rnd.Next(
10
,
16
);
string
str_r3
=
rBase[r3].Trim();
//
区位码第4位
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();
//
定义两个字节变量存储产生的随机汉字区位码
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;
}
}
}
查看全文
相关阅读:
networkX用法整
在人生路上对我影响最大的三位老师
介绍自己
介绍自己
自我介绍
打印沙漏1
介绍自己
对我影响最大的三位老师
人生路上影响对我最大的三位老师
1.自我介绍
原文地址:https://www.cnblogs.com/yangbin1005/p/1171608.html
最新文章
常用adb命令
如何找到Android app启动activity和页面元素信息
如何重新安装DEDECMS织梦系统
HTML特殊符号对照表
结构
字符串的比较问题
Java语法糖设计
排序与查找
面向对象
Python selenium 三种等待方法
热门文章
ubuntu 16 下安装 Ubuntu Make
CentOS 7 中英文桌面安装步骤详细图解
实验吧--web--天下武功唯快不破
php if语句
php 中文乱码问题
实验吧--web--你真的会php吗
Ubuntu的SWAP设置
Ubuntu14.04如何备份和恢复系统
Mac Sublime 相关资源
N-Gram的数据结构
Copyright © 2011-2022 走看看