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;
}
}
}
查看全文
相关阅读:
webpack
Js数组和字符串常用方法
Vue.js 2.0 快速上手
雅虎前端优化的35条军规
前端问题大杂烩
Java和js的区别,以及Java和c的区别
前后端联调
99%的人都理解错了HTTP中GET与POST的区别
vue项目目录
vuex入门
原文地址:https://www.cnblogs.com/yangbin1005/p/1171608.html
最新文章
css中元素居中的几种方法
H5特效动画中的CSS技巧
React开发
ReactJS的简单介绍
目前前端框架及适用场景。
剖析VUE
关于SetTimeout性能的问题
封装、继承、多态
JQuery 简单的Ajax调用实例
对于MVC框架的详细理解
热门文章
script标签的使用,从零开始
如何允许JQuery 与 其他库共存
SourceTree轻松Git项目
CSS实现单行、多行文本溢出显示省略号
JavaScript模块化规范
在浏览器中输入url回车之后会发生什么
移动端网页定宽适配
yahoo军规
一些基于jQuery开发的控件
webpack使用
Copyright © 2011-2022 走看看