【发布时间】:2012-12-31 12:46:55
【问题描述】:
如何在 c# 中对字符串进行按位运算
例子
string sr1="0101110";
string sr2="1101110";
sr1 & sr2="0101110";
或
sr1 | sr2="1101110";
我该如何进行这样的比较?
注意字符串长度固定为 1440 个字符
这是我的肮脏解决方案
private string compareBitWiseAnd(string sr1, string sr2)
{
char[] crArray1 = sr1.ToCharArray();
char[] crArray2 = sr2.ToCharArray();
StringBuilder srResult = new StringBuilder();
for (int i = 0; i < crArray1.Length; i++)
{
if (crArray1[i] == crArray2[i])
{
srResult.Append(crArray1[i]);
}
else
{
srResult.Append('0');
}
}
return srResult.ToString();
}
private string compareBitWiseOr(string sr1, string sr2)
{
char[] crArray1 = sr1.ToCharArray();
char[] crArray2 = sr2.ToCharArray();
StringBuilder srResult = new StringBuilder();
for (int i = 0; i < crArray1.Length; i++)
{
if (crArray1[i] == '1' || crArray2[i] == '1')
{
srResult.Append("1");
}
else
{
srResult.Append('0');
}
}
return srResult.ToString();
}
【问题讨论】:
-
为什么你的数字以字符串开头?如果这与 stackoverflow.com/questions/14095943/… 相关,请注意将数字作为字符串处理是非常低效的。
-
@MattiVirkkunen 感谢您的警告。实际上这是一种散列和散列检查操作。所以我们可以说点别的。
-
我也尝试了 int64 的答案,但数字仍然太大。
标签: c# string bit-manipulation logical-operators operation