c# - 将 Arduino 校验和函数转换为 C#

标签 c# c++ arduino checksum

我有这个 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;
    }
}

https://dotnetfiddle.net/6icpvv

关于c# - 将 Arduino 校验和函数转换为 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31246457/

相关文章:

c++ - 使用 Arduino IDE 编程是否适合商业产品?

C++(粒子光子)线程变化变量

c# - 判断是数组还是对象

c# - Serilog 不写入文件(.net 核心 2.2)

c# - WCF:运行几秒钟后出现 EndpointNotFoundException

c# - 在使用 Fluent NHibernate 映射时对接口(interface)进行编程

c++ - 使用运算符重载添加两个 vector

c++ - wxWidgets - 创建一个无边框的可移动框架

c++ - 在 C++ 中从文本文件中读取数值的最快方法(在这种情况下为 double )

c# - 类型转换无法正常工作(arduino IDE)