请教一个生成随机数的问题
private void Page_Load(object sender, System.EventArgs e)
{
this.lblShow.Text = haha(hoho(3));
}
private byte[] hoho(int i)
{
byte[] b = new byte[i];
RNGCryptoServiceProvider rc = new RNGCryptoServiceProvider();
rc.GetBytes(b);
return b;
}
private string haha(byte[] b)
{
StringBuilder sb = new StringBuilder();
for(int i = 0;i < b.Length;i++)
sb.AppendFormat( "{0:X2} ",b[i]);
return sb.ToString();
}
上面的代码只能生成一个16进制的随机数
如果我想要生成的随机数字不仅仅是只有16进制的那些数字和字母,我还想要我的随机数里,可能会有W Z Y等这些字母的话,那应该怎么办呢??
还有一个问题就是,上面的那两段代码生成一个16进制的随机数,请问生成16进制是上面那一条代码完成的??
最后一个问题,{0:X2}中的X2代表什么?
------解决方案--------------------一个比较傻的例子,参考一下
private string GenerateCheckCode()
{
//验证码长度
int CODELENGTH = 4;
int number;
string strCode = string.Empty;
Random r = new Random();
for(int i = 0; i < CODELENGTH; i++)
{
number = r.Next();
//字符从0~9, A~Z中随机产生,对应的ASCII码分别为48~57, 65~90
number = number % 36;
if(number < 10)
number += 48;
else
number += 55;
strCode += ((char)number).ToString();
}
//在Cookie中保存验证码
Response.Cookies.Add(new HttpCookie( "CheckCode ", strCode));
return strCode;
}