面对问题与int转换为char

时间:2015-06-24 06:12:58

标签: c#

我面临一个问题,可能是使用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数组?

2 个答案:

答案 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]范围内的随机数。我希望这是你真正想要的。