我怎么能阻止我的计数器从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;
    } 

我怎么能阻止我的计数器从0到48后,它记录x查找字符数组

问题是您正在将数字的字符表示转换为整数,该整数将是表示该字符的数值,而不是您要查找的数字。

试试这个:

...
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