【发布时间】:2018-05-12 13:05:58
【问题描述】:
我正在尝试根据字符串计算 NMEA 校验和,因此我可以将它与给定的校验和进行比较,并声明字符串是否有错误。 这是我正在尝试的方式(给定的索引 0 只是单行的示例)
List<string> richTextBoxLines = richTextBox1.Lines.ToList();
richTextBoxLines.RemoveAll(x => !x.Contains("GPGGA"));
richTextBox1.Lines = richTextBoxLines.ToArray();
NOLbox.Text = richTextBox1.Lines.Count().ToString();
int finalCheckSum = 0;
string sumOfBytes = richTextBox1.Lines[0].Split('*').First().Substring(1);
for (int i = 0; i == sumOfBytes.Length; i++)
{
finalCheckSum ^= Convert.ToByte(sumOfBytes[i]);
}
checksumValue.Text = finalCheckSum.ToString();
第一部分除去 GGA 以外的通信,其余部分必须计算校验和。
问题是我将需要循环外的FinalCheckSum 变量值,到目前为止它返回0 - 因为它当然被声明为0,尽管在循环内声明它是没有意义的。鉴于此,我怎样才能在循环之外获取变量值以便以后使用它?
【问题讨论】:
-
因为这个
i == sumOfBytes.Length我怀疑你的循环一直在运行。我猜你想要i <= sumOfBytes.Length -
i < sumOfBytes.Length是正确的。<=将提供IndexOutOfRangeException -
是的,没错。我有
IndexOutOfRangeException和<=。现在,使用<效果很好。谢谢!
标签: c# visual-studio loops variables nmea