我正在开发仪器驱动程序,我想知道如何计算帧的校验和。
说明:
以字符[0-9]和[A-F]表示。
从[STX]之后的字符开始直到[ETB]或 [ETX](包括[ETB]或[ETX])以二进制形式添加。
2位数字,代表最低8位 十六进制代码,转换为ASCII字符[0-9]和[A-F]。
- 醇>
最重要的数字存储在CHK1中,最不重要的数字 CHK2中的数字。
我没有超过第3和第4点。
任何人都可以提供c#的示例代码。
请帮帮我。
答案 0 :(得分:17)
最后我得到了答案,这是计算校验和的代码:
private string CalculateChecksum(string dataToCalculate)
{
byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
int checksum = 0;
foreach (byte chData in byteToCalculate)
{
checksum += chData;
}
checksum &= 0xff;
return checksum.ToString("X2");
}
答案 1 :(得分:0)
您可以在一行中完成此操作:
return Encoding.ASCII.GetBytes(dataToCalculate).Aggregate((r, n) => r += n).ToString("X2");
答案 2 :(得分:-3)
private bool CheckChecksum(string data)
{
bool isValid =false
byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
int checkSum = 0;
for ( int i=i i<byteToCalculate.Length;i++)
{
checkSum += byteToCalculate[i];
}
checksum &= 0xff;
if (checksum == byteToCalculate[ChecksumPlace]
{
return true
}
else
{
return false
}
}