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;
}
}
}
查看全文
相关阅读:
HTML Rendering Error
PyCharm将选中的内容加上引号
Scrapy中的Request和日志分析
PyCharm关闭按两次Shift进入搜索框的功能
博客园更换模板的链接
Scrapy的Spider类和CrawlSpider类
Scrapy安装和简单使用
计算π的近似值
Python用pip安装第三方库时换源下载
网页解析 -- bs4 和 xpath 的简单使用
原文地址:https://www.cnblogs.com/yangbin1005/p/1171608.html
最新文章
LeetCode-14. 最长公共前缀
LeetCode 13、罗马数字转整数
LeetCode 9、判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
LeetCode-7
Scrapy 下载图片时 ModuleNotFoundError: No module named'PIL'
Redis的基本使用
NoSQL简介
Python 对列表嵌套的数据进行排序
IP代理相关的网站
MySql 表结构修改、约束条件、表关系
热门文章
MySql 筛选条件、聚合分组、连接查询
Markdown常用语法
MySql 库/表级操作 及 数据类型
一些用着方便的谷歌插件
Scrapy_redis主机连接虚拟机的数据库时显示积极拒绝,无法连接
Scrapy_redis
打包Python文件为exe
VirtualBox设置自动适应屏幕
Scrapy对接Selenium
Scrapy的下载中间件
Copyright © 2011-2022 走看看