我有这个 Arduino 校验和函数,我想在 C# 中使用它来检查我收到的数据的有效性:
char
在Arduino中是1字节长,int
是两个字节,C#中对应的data-type是short
char Send::calcChecksum(const char* const packet, const int packetLength) {
int i = 0;
char checksum = 0;
while(i < packetLength) {
checksum ^= packet[i++];
}
return checksum;
}
我如何在 C# 中编写此函数?我特别困惑 ^=
运算符的作用。
最佳答案
using System;
public class Program
{
public static void Main()
{
var stringToCheck = "hi there";
Console.WriteLine("Checksum for " + stringToCheck + ": " + CalcChecksum(stringToCheck, stringToCheck.Length));
}
static int CalcChecksum(string packet, int packetLength)
{
char checksum = (char)0;
for (int i = 0; i < packetLength; i++)
{
checksum ^= packet[i];
}
return checksum;
}
}
关于c# - 将 Arduino 校验和函数转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246457/