c#生成随机位数的汉字字符串
今天在網(wǎng)上查了下如何生成隨機(jī)漢字字符串的方法,現(xiàn)在一起分享供大家學(xué)習(xí)和參考。
public? string? aa() {
??????????? Encoding gb = Encoding.GetEncoding("gb2312");
??????????? //調(diào)用函數(shù)產(chǎn)生4個隨機(jī)中文漢字編碼
??????????? object[] bytes = CreateRegionCode(4);
??????????? //根據(jù)漢字編碼的字節(jié)數(shù)組解碼出中文漢字
??????????? 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[])));
??????????? string a1= str1 +"" +str2 +""+str3 +""+str4 ;
??????????? return a1;
???????
??????? }
?
???????? public static object[] CreateRegionCode(int strlength)
? {
? //定義一個字符串?dāng)?shù)組儲存漢字編碼的組成元素
? 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數(shù)組用來
? object[] bytes=new object[strlength];
? /**//*每循環(huán)一次產(chǎn)生一個含兩個元素的十六進(jìn)制字節(jié)數(shù)組,并將其放入bject數(shù)組中
? 每個漢字有四個區(qū)位碼組成
? 區(qū)位碼第1位和區(qū)位碼第2位作為字節(jié)數(shù)組第一個元素
? 區(qū)位碼第3位和區(qū)位碼第4位作為字節(jié)數(shù)組第二個元素
? */
? for(int i=0;i<strlength;i++)
? {
? //區(qū)位碼第1位
? int r1=rnd.Next(11,14);
? string str_r1=rBase[r1].Trim();
? //區(qū)位碼第2位
? rnd=new Random(r1*unchecked((int)DateTime.Now.Ticks)+i);//更換隨機(jī)數(shù)發(fā)生器的
? //種子避免產(chǎn)生重復(fù)值
? int r2;
? if (r1==13)
? {
? r2=rnd.Next(0,7);
? }
? else
? {
? r2=rnd.Next(0,16);
? }
? string str_r2=rBase[r2].Trim();
? //區(qū)位碼第3位
? rnd=new Random(r2*unchecked((int)DateTime.Now.Ticks)+i);
? int r3=rnd.Next(10,16);
? string str_r3=rBase[r3].Trim();
? //區(qū)位碼第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();
? //定義兩個字節(jié)變量存儲產(chǎn)生的隨機(jī)漢字區(qū)位碼
? byte byte1=Convert.ToByte(str_r1 + str_r2,16);
? byte byte2=Convert.ToByte(str_r3 + str_r4,16);
? //將兩個字節(jié)變量存儲在字節(jié)數(shù)組中
? byte[] str_r=new byte[]{byte1,byte2};
? //將產(chǎn)生的一個漢字的字節(jié)數(shù)組放入object數(shù)組中
? bytes.SetValue(str_r,i);
???
? }
? return bytes;
? }
}
}
轉(zhuǎn)載于:https://www.cnblogs.com/seoer/archive/2012/01/11/2319241.html
總結(jié)
以上是生活随笔為你收集整理的c#生成随机位数的汉字字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring基于IOC容器基本原理
- 下一篇: c#的Marshal