【问题标题】:error setting variable to specific character in char array / string to char[] array to string[] array to string错误将变量设置为 char 数组中的特定字符/字符串到 char[] 数组到 string[] 数组到字符串
【发布时间】:2016-07-05 10:55:44
【问题描述】:

您在这里看到的是我目前正在从事的一个项目的一些代码。我正在制作一个 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

现在我知道这段代码远非完美,因为我仍在学习(我在教育的前半年)。但我知道如果我使用的是 string[] 数组而不是 char[] 数组,这段代码可以完美运行。 但我不知道如何将 char[] 数组转换为 string[] 数组,而且我绝对不能手动将每个字符输入到字符串数组中,因为我正在处理一个包含 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++;
      }

【问题讨论】:

  • 显示ssss 的示例并提及Attempt 的类型
  • Attempt 预定义为空字符串。
  • ssss = @"abcdefghijklmnopqrstuvxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789! ""#$%&'()*+,-./:;?@[]^`_{|}~ÇüéâÜÖÆÆôöòûù ׃áíóúñ间±‗¾¶§÷¸°¨·¹³²■ "

标签: c#


【解决方案1】:
string arraychar=new string(ArrayX);

【讨论】:

  • 你能告诉我你想让我用这段代码做什么吗?
  • 您想要一种将 char 数组转换为字符串的方法,这就是方法,因为 ArrayX 是 char[]
【解决方案2】:

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

【讨论】:

    【解决方案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() 将字符转换为字符串。

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

    【讨论】:

      猜你喜欢
      • 2021-10-05
      • 2014-05-01
      • 2017-06-15
      • 1970-01-01
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 2021-09-17
      • 1970-01-01
      相关资源
      最近更新 更多