我正在尝试比较两个字符串(Tx和Rx数据)并找到 数量的不等字符 。
借助以下代码,我设法获得数量
string TxData = "00001111";
string RxData = "00000000";
int distorted = 0;
for (int i = 0; i < TxData.Length; i++)
{
if (TxData[i] != RxData[i])
distorted++;
}
Console.Write("Distorted Bits (qty) : {0}", distorted);
结果:
扭曲位(数量):4
但我很想知道是否有更好的方法来完成这项任务?
感谢您的时间...... :)
答案 0 :(得分:8)
如果它们总是相同的长度:
int distorted = TxData.Zip(RxData, (a,b) => a == b ? 0 : 1).Sum();
答案 1 :(得分:3)
我喜欢okrumnows通过它的简单性回答,但假设你真的已经有了字节(或int)并且不需要首先将它们转换为字符串,你可能会更喜欢做类似的事情:
int myMethod(byte byte1, byte byte2)
{
//byte1 = Convert.ToByte("10010101",2);
//byte2 = Convert.ToByte("10011101",2);
byte xorvalue = (byte)( byte1 ^ byte2);
return NumberOfSetBits(xorvalue);
}
private static int NumberOfSetBits(uint i)
{
i = i - ((i >> 1) & 0x55555555);
i = (i & 0x33333333) + ((i >> 2) & 0x33333333);
return (((i + (i >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
}
这会快得多。