错误设置变量为char数组/字符串中的特定字符为char[]数组为string[]数组为string

本文关键字:数组 char string 字符 字符串 变量 设置 错误 | 更新日期: 2023-09-27 17:55:05

您在这里看到的是我目前正在从事的一个项目的一小部分代码。我正在制作一个BruteForce程序,因为我的朋友要求我在他的网站上测试他的登录系统。

我需要根据他的程序检查每个密码,为此,我创建了这个while循环,它循环遍历我的字符数组,检查长度为1然后2然后3 .....的所有可能的密码

变量Attempt将反复被设置为一个新的字符串,该字符串由我的char[]数组中的任意字符在manny ArrayX[___] .....所描述的位置上组成

Attempt = ArrayX[Eight] + ArrayX[Seventh] + ArrayX[Sixth] + ArrayX[Fifth] + ArrayX[Fourth] + ArrayX[Third] + ArrayX[Second] + ArrayX[First];

这行代码中完成

问题是,我得到一个错误说"不能隐式转换类型int到字符串",如果代码认为由变量ArrayX[_"""Here"""_]表示的int是应该转换为字符串以适合它到变量Attempt的东西。

现在我知道这段代码远非完美,因为我还在学习(我在我的教育的头半年)。但我知道一个事实,这段代码工作完美,如果我使用一个字符串[]数组,而不是一个char[]数组。但是我不知道如何将char[]数组转换为字符串[]数组,并且我绝对不能手动将每个字符键入字符串数组,因为我正在使用10000+字符的数组。

如果有人有一个主意,我可以如何解决我的问题,我将非常感激。(请记住,这段代码必须尽可能快地运行,所以我想(如果可能的话)不要让它太复杂,这样它就不会慢很多) 这是我的一些代码(这是c#):
char[] ArrayX = ssss.ToCharArray();
while (PasswordNotFound)
      {
            if (First == ArrayX.Length)
            {
                Second++;
                First = 0;
            }
            if (Second == ArrayX.Length)
            {
                Third++;
                Second = 0;
            }
            if (Third == ArrayX.Length)
            {
                Fourth++;
                Third = 0;
            }
            if (Fourth == ArrayX.Length)
            {
                Fifth++;
                Fourth = 0;
            }
            if (Fifth == ArrayX.Length)
            {
                Sixth++;
                Fifth = 0;
            }
            if (Sixth == ArrayX.Length)
            {
                Seventh++;
                Sixth = 0;
            }
            if (Seventh == ArrayX.Length)
            {
                Eight++;
                Seventh = 0;
            }
            if (Eight == ArrayX.Length)
            {
                break;
            }
            Attempt = ArrayX[Eight] + ArrayX[Seventh] + ArrayX[Sixth] + ArrayX[Fifth] + ArrayX[Fourth] + ArrayX[Third] + ArrayX[Second] + ArrayX[First];
            First++;
            Cracks++;
      }

错误设置变量为char数组/字符串中的特定字符为char[]数组为string[]数组为string

string arraychar=new string(ArrayX);

当您使用+添加2个字符时,您将得到int作为结果,因为char是数字类型。如果您想将它们视为字符串并将它们连接起来,则需要使用其他方法。在c#中,为什么(char)(1) + (char)(2)对于各种可能的结果都是int 3

我找到了解决问题的方法。

这句话似乎奏效了:

Attempt = string.Concat(ArrayX[Eight].ToString().Replace(" ", string.Empty), ArrayX[Seventh].ToString().Replace(" ", string.Empty), ArrayX[Sixth].ToString().Replace(" ", string.Empty), ArrayX[Fifth].ToString().Replace(" ", string.Empty), ArrayX[Fourth].ToString().Replace(" ", string.Empty), ArrayX[Third].ToString().Replace(" ", string.Empty), ArrayX[Second].ToString().Replace(" ", string.Empty), ArrayX[First].ToString().Replace(" ", string.Empty));

string.Concat()比使用+效果更好

.ToString()将char转换为string

.Replace(" ", string.Empty)删除空格,我不想在他们需要之前显示。