面临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数组中

面临int到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]的随机数。我希望这是你真正想要的。