C#随机字符串代码
privatestringGetCode(){intnumber;charcode;stringcheckCode=String.Empty;Randomrandom=n...
private string GetCode()
{
int number; char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = 0; i < 4; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
return checkCode;
}
其中
code = (char)('0' + (char)(number % 10));
是什么意思啊?我知道是生成数字,但我不明白原理~~~ 展开
{
int number; char code;
string checkCode = String.Empty;
Random random = new Random();
for (int i = 0; i < 4; i++)
{
number = random.Next();
if (number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString();
}
return checkCode;
}
其中
code = (char)('0' + (char)(number % 10));
是什么意思啊?我知道是生成数字,但我不明白原理~~~ 展开
4个回答
展开全部
code = (char)('0' + (char)(number % 10));
0的ASC码0x30加上强制转换数字(number % 10)为ASC码,然后再转换为char字符型。
例如:number=12
那么code=(char)(0x30+(char)2))=(char)(0x32)='2'
(char)2,就是强制转换2为ASC码
(char)0x32就是ASC码中的16进制32,就是字符型'2'
0的ASC码0x30加上强制转换数字(number % 10)为ASC码,然后再转换为char字符型。
例如:number=12
那么code=(char)(0x30+(char)2))=(char)(0x32)='2'
(char)2,就是强制转换2为ASC码
(char)0x32就是ASC码中的16进制32,就是字符型'2'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个函数是用来生产4位随即验证码的:
number = random.Next();
if (number % 2 == 0) //随机数是偶数,就生产个偶数字符
code = (char)('0' + (char)(number % 10));
else //随机数是奇数,就生成字母字符
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString(); //然后把生产的字符加到字符串里面
最后返回个4个字符长度的字符串。
(char)('0' + (char)(number % 10)); number是数字,加上'0'就得到一个unicode,因为字符里面的'0','1','2'...等等在编码的时候都是连续的。
懂了?
number = random.Next();
if (number % 2 == 0) //随机数是偶数,就生产个偶数字符
code = (char)('0' + (char)(number % 10));
else //随机数是奇数,就生成字母字符
code = (char)('A' + (char)(number % 26));
checkCode += code.ToString(); //然后把生产的字符加到字符串里面
最后返回个4个字符长度的字符串。
(char)('0' + (char)(number % 10)); number是数字,加上'0'就得到一个unicode,因为字符里面的'0','1','2'...等等在编码的时候都是连续的。
懂了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种方法好麻烦哦。
道理很简单呀,如果是偶数
就是if (number % 2 == 0)成立执行
code = (char)('0' + (char)(number % 10));这句
number % 10的结果肯定是0-9的
如果是奇数就执行code = (char)('A' + (char)(number % 26));
number % 26的结果肯定是0-25的,
道理很简单呀,如果是偶数
就是if (number % 2 == 0)成立执行
code = (char)('0' + (char)(number % 10));这句
number % 10的结果肯定是0-9的
如果是奇数就执行code = (char)('A' + (char)(number % 26));
number % 26的结果肯定是0-25的,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
number % 10 是Int类型 ;
(char)(number % 10)这样搞一下它就变成了char类型unicode字符串;
'0' + (char)(number % 10)这是两个unicode字符串连起来返回一个
char类型的code
即 code = (char)('0' + (char)(number % 10));
(char)(number % 10)这样搞一下它就变成了char类型unicode字符串;
'0' + (char)(number % 10)这是两个unicode字符串连起来返回一个
char类型的code
即 code = (char)('0' + (char)(number % 10));
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询