【发布时间】:2018-06-07 05:50:25
【问题描述】:
我的问题是我有一个二进制字符串列表,如下所示:
list=
和一个二进制值 st1=1010 的输入字符串。我想异或:
st3=st1 异或列表
然后:
st3=st3 异或列表
st3=st3Xor 列表 ;
st3=st3 异或列表;
其中操作将是 st1 Xor 与键列表中的第一个键和与键列表中的第二键的结果 Xor 以及与键列表中的第三键的结果 Xor 等等。任何人都可以帮助我吗? 我已经尝试过这段代码,但它没有像我预期的那样工作:
foreach (string k in keys)
{
string st1 = textBox1.text;
string st2 = k;
string st3;
st3 = "";
//i wanted to make the length of both strings st1 and st2 equal
//here if the length of st1 greater than st2
if (st1.Length > st2.Length)
{
int n = st1.Length - st2.Length;
string pad = "";
for (int j = 1; j <= n; j++)
{ pad += 0; }
string recover = pad.ToString() + st2;
//this is my Xor operation that i made for string values
for (int counter = 0; counter < st1.Length; counter++)
{
if (st1[counter] != recover[counter])
{
st3 = st3 + '1';
}
else
{ st3 = st3 + '0'; }
}
listBox4.Items.Add("Xor :" + st3.ToString());
}
//here if st1 is less than st2
else if (st1.Length < st2.Length)
{
int nn = st2.Length - st1.Length;
string ppad = "";
for (int j = 1; j <= nn; j++)
{
ppad += 0;
}
string recover = ppad.ToString() + st1;
for (int counter = 0; counter < st2.Length; counter++)
{
if (st2[counter] != recover[counter])
{
st3 = st3 + '1';
}
else
{ st3 = st3 + '0'; }
}
listBox4.Items.Add("Xor :" + st3.ToString());}
//here if st1 equal st2
else
{
for (int counter = 0; counter < st1.Length; counter++)
{
if (st1[counter] != st2[counter])
{
st3 = st3 + '1';
}
else
{ st3 = st3 + '0'; }
}
listBox4.Items.Add("Xor :" + st3.ToString());
}
}
【问题讨论】:
-
到目前为止你尝试了什么?
-
你考虑过二进制语法 0b1010 吗?
-
我编辑并放置了我尝试过的代码,你能看到它并帮助我@Tobias