面临int到char转换的问题
本文关键字:问题 转换 char int 面临 | 更新日期: 2023-09-27 17:59:13
我可能面临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);
它不在给定的索引中存储数字,但存储类似"''a"的ascii字符。为什么?请告知,
如何将数字存储到随机索引的char数组中
Convert.ToChar()将按索引获取字母,如果您通过64,您将获得@。要从数字中获取字符,您可以简单地index.ToString()[0]
更改
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]
的随机数。我希望这是你真正想要的。