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

时间:2016-07-05 10:55:44

标签: c#

您在此处看到的是我目前正在处理的项目中的一些代码。我正在制作一个BruteForce计划,因为我被我的朋友挑战,在他的网站上测试他的登录系统。

我需要针对他的程序检查每个密码,为此我创建了这个while循环,循环遍历我的chars数组,检查所有可能的密码长度为1然后是2然后3 ..... / p>

变量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的东西。

现在我知道这段代码远非完美,因为我还在学习(我在上半年接受教育)。但我知道这个代码完全正常,因为我使用的是string []数组而不是char []数组。 但我不知道如何将char []数组转换为string []数组,我绝对不能手动将每个字符键入一个sting数组,因为我使用的是10000多个字符的数组。 / p>

如果有人知道如何解决我的问题,我将非常感激。 (请记住,这段代码必须尽可能快地运行,所以我想(如果可能的话)不要让它变得复杂,所以它不会减慢很多)

这是我的一些代码(这是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++;
      }

3 个答案:

答案 0 :(得分:0)

string arraychar=new string(ArrayX);

答案 1 :(得分:0)

使用+添加2个字符时,您将得到一个int作为结果,因为char是一种数字类型。如果要将它们视为字符串并将它们连接起来,则需要使用其他方法。有关各种可能性,请参阅In c# why (char)(1) + (char)(2) results in int 3

答案 2 :(得分:0)

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

这个sems做的诀窍:

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变成字符串。

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