基本上,我正在制作一个包含两个部分的程序
1)将给定字符串从HEX转换为BINARY(DID IT)
我遇到问题的部分是 : -
2)在转换后的字符串中打印1的位置 例如,我转换的字符串是
1011000001001我想要打印1,3,4,10,13(这些是字符串中1的位置)
我的代码是: -
private void button1_Click(object sender,EventArgs e)
{
string temp = textBox1.Text;
string binary = ConvertTOBinary(temp);
//Console.WriteLine(binaryval);
}
public string 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'转换为'string'
请帮助!! :(
答案 0 :(得分:0)
Linq是一件很棒的事情,但有时以“ole school”的方式做事更容易,更重要的是更清楚:
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);
请记住,有一天您可能必须返回该代码并弄清楚它的作用。