-4

基本上,我正在制作一个由两部分组成的程序

1) 将给定的字符串从 HEX 转换为 BINARY ( DID IT )

我遇到问题的部分是:-

2)打印1在转换后的字符串中的位置例如我的转换后的字符串是

1011000001001 所以我想打印 1,3,4,10,13 (这些是字符串中 1 的位置)

我的代码是:-

私人无效按钮1_Click(对象发送者,EventArgs e)

      {

        string temp = textBox1.Text;
        string binary = ConvertTOBinary(temp);
        //Console.WriteLine(binaryval);

    }

公共字符串 ConvertTOBinary(string temp) {

        string binaryval = "";



        binaryval = Convert.ToString(Convert.ToInt64(temp, 16), 2);
        MessageBox.Show(binaryval);


        var indexes = binaryval
            .Select((c, index) => c == '1' ? index + 1 : 0)
            .Where(indexPlus1 => indexPlus1 > 0);
        var indexesText = string.Join(",", indexes);
        MessageBox.Show(indexes);

        return binaryval;


    }

我收到错误:-

1 'string.Join(string, string[])' 的最佳重载方法匹配有一些无效参数'

2':无法从 'System.Collections.Generic.IEnumerable' 转换为 'string[]'

3 'System.Windows.Forms.MessageBox.Show(string)' 的最佳重载方法匹配有一些无效参数 C:\Documents and Settings\Hamza\My Documents\Visual Studio 2008\Projects\Import-Compare\Import-Compare \Parser.cs 46 13 导入比较错误

4 参数“1”:无法从“System.Collections.Generic.IEnumerable”转换为“字符串”

请帮助需要!:(

4

1 回答 1

0

Linq 是一个很棒的东西,但有时以“旧学校”的方式做事更容易,更重要的是更清晰:

        var test = "1011000001001";
        var answer = new StringBuilder();

        var ix = test.IndexOf('1');
        while (ix > -1) {
            ix = ix + 1;
            answer.AppendFormat("{0},", ix);
            ix = test.IndexOf('1', ix);
            }
        var counts = answer.ToString().TrimEnd(new char[] { ',' });
        Console.WriteLine(counts);

请记住,有一天您可能必须返回该代码并弄清楚它的作用。

于 2013-10-04T17:47:32.460 回答