我试图根据字符串计算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,但是在循环中声明它是毫无意义的。那个,我怎样才能在循环之外得到变量值,以便以后可以使用它?
答案 0 :(得分:1)
对此的一般解决方案是在范围内移动您需要1级的变量,直到您可以在需要的位置访问它。在你的情况下,我看到你已经这样做了,你的变量是在for循环之前声明的。错误必须在循环的停止条件下。我想你的意思是写下:
for (int i = 0; i <= sumOfBytes.Length; i++)