-4

基本的に、私は2つの部分で構成されるプログラムを作成しています

1) 指定された文字列を HEX TO BINARY ( DID IT ) から変換します

私が問題を抱えている部分は次のとおりです:-

2) 変換された文字列に存在する 1 の位置を出力します。たとえば、私の変換された文字列は

1011000001001 SO i want to print 1,3,4,10,13 (これらは文字列内の 1 の位置です)

私のコードは:-

private void button1_Click(オブジェクト送信者, EventArgs e)

      {

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

    }

公開文字列 ConvertTOBinary(文字列 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' から 'string' に変換できません

助けてください!! :(

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 に答える