我面临一个问题,可能是使用int转换为char。
我在做什么?
> Create random password using Membership.createPassword()
> Create random digit.
> Convert password to array
> Get random array index and replace character with int
我有以下代码来生成至少1位数的随机密码。
GetRandomPassword(10, 1);
private string GetRandomPassword(int length, int numberOfNonAlphanumericCharacters)
{
int index = new Random().Next(1, 9);
string password = Membership.GeneratePassword(length, numberOfNonAlphanumericCharacters);
char[] charArray = password.ToCharArray();
charArray[index] = Convert.ToChar(index);
string newPassword = new string(charArray);
return newPassword;
}
然而,我面临的问题是这一行
charArray[index] = Convert.ToChar(index);
它不会在给定索引处存储数字,但会存储ascii字符,如' \ a'。 为什么? 请指教,
如何在随机索引处将数字存储到char数组?
答案 0 :(得分:2)
Convert.ToChar()将按索引获得,如果你通过64,你将得到@。
要从数字中获取字符,您只需index.ToString()[0]
答案 1 :(得分:1)
更改
charArray[index] = Convert.ToChar(index);
为:
charArray[index] = (char)('0' + index);
现在......这条线意味着什么? c#中的char
更像int
而不是string
...所以你可以做到
int x = 'A' + 1;
然后你会得到x == 66
(这是'B'
的unicode代码)...你可以用数字做同样的事情,在unicode表中就像'0'
(代码48),'1'
(代码49)......
int x = '0' + 2;
你将获得50.你可以将49投回到一个字符,你将获得'2'
。
请注意,您要生成[1, 8]
范围内的随机数。我希望这是你真正想要的。