我怎么能阻止我的计数器从0到48后,它记录x查找字符数组
本文关键字:记录 数组 字符 查找 怎么能 我的 计数器 | 更新日期: 2023-09-27 18:17:32
下面我已经包含了我的解密方法的一个片段,使用一个多比乌斯平方。我想采取前两个用户输入,并将它们转换为坐标,以查找哪个字母在正方形匹配输入数字。我的代码适用于x值,然后将y赋值为48。我需要帮助找到x和y之间的增量而不将y更改为48。
public string DecryptMessage(string userInput)
{
string outputMessage = string.Empty;
char[,] alphaValues = new char[5, 5] {
{'A', 'B', 'C', 'D', 'E'},
{'F', 'G', 'H', 'I', 'K'},
{'L', 'M', 'N', 'O', 'P'},
{'Q', 'R', 'S', 'T', 'U'},
{'V', 'W', 'X', 'Y', 'Z'},
};
char[] userInputArray = userInput.ToCharArray();
for (int i = 0; i < userInputArray.Length; i++)
{
int x = Convert.ToInt32(userInputArray[i]); i++;
//after this point i somehow changes from 0 to 48 with the incriment
//if i get this fixed the decrypt will work, still trying to figure this out
int y = Convert.ToInt32(userInputArray[i]);
char letterToReturn = alphaValues[x, y];
string outputLetter = letterToReturn.ToString();
outputMessage += outputLetter;
}
return outputMessage;
}
问题是您正在将数字的字符表示转换为整数,该整数将是表示该字符的数值,而不是您要查找的数字。
试试这个:
...
int x = userInputArray[i++] - '0';
int y = userInputArray[i] - '0';
char letterToReturn = alphaValues[x, y];
...
由于'0'到'9'由48到57表示,因此从字符中减去'0'有效地将数字字符转换为实际数字。
"0"是48,"1"是49,以此类推,直到"9"是57,所以"1"-"0"是49 - 48,或者只是1。'9' - '0' = 57 - 48或9。
当然,这个小技巧取决于所使用的字符集,但它适用于ASCII和unicode