0

16 進値を 2 進値に変換するプログラムを作成しています。よくできましたが、今はプログラムの第2部で問題に直面しています。

今、私は自分のバイナリに存在する「1」の位置を表示したいのですが、これは次のように作成されます。たとえば、私のバイナリは

0100100101101

それは私に言うべきです

2,5,8,10,11,13

private void button1_Click(object sender, EventArgs e)

     {
        string temp = textBox1.Text;
        string binary = ConvertTOBinary(temp);


     }                  // This is the code of my Button 

public string ConvertTOBinary(string temp)
    {

        string binaryval = "";
        binaryval = Convert.ToString(Convert.ToInt64(temp, 16), 2);
        MessageBox.Show(binaryval);
        return binaryval;
     }

C#で作ってます!!

4

2 に答える 2

6
var indexes=binary.Select((x,i)=>new{digit=x,index=i})
                  .Where(x=>x.digit=='1')
                  .Select(x=>x.index+1);

または正規表現で

var indexes=Regex.Matches(binary,"1")
                 .Cast<Match>()
                 .Select(x=>x.Index+1);

また

List<int> indexes=new List<int>();
for(int i=0;i<binary.length;i++)
{
    if(binary[i]=='1')indexes.Add(i+1);
}
于 2013-10-04T16:34:13.133 に答える
1

単一の選択として:

var indexes = binary
                .Select((c, index) => c == '1' ? index + 1 : 0)
                .Where(indexPlus1 => indexPlus1 > 0);

次に、フォーム「2,5,8,10,11,13」に入れるコード:

var indexesText = string.Join(",", indexes);
于 2013-10-04T16:57:19.113 に答える