c# - 如何使用数据结构中所有字节的 8 位加法计算校验和

标签 c#

我需要从字节数组计算校验和。它是一些串口数据包。我只有这段文字:

Checksum is calculated using 8-bit addition of all bytes in the data structure. Overflows are not taken into account (1 byte).

8位加法怎么做?

在 C# 中需要它。

最佳答案

直接加法?好吧,您可以很容易地遍历所有字节:

public static byte ComputeAdditionChecksum(byte[] data)
{
    byte sum = 0;
    unchecked // Let overflow occur without exceptions
    {
        foreach (byte b in data)
        {
            sum += b;
        }
    }
    return sum;
}

或者,使用 LINQ:

public static byte ComputeAdditionChecksum(byte[] data)
{
    long longSum = data.Sum(x => (long) x);
    return unchecked ((byte) longSum);
}

我正在使用 long 来避免在长流上溢出 - 我假设它会小于 255 字节 :) 实际上你可能会可以使用 int 而不是 long

关于c# - 如何使用数据结构中所有字节的 8 位加法计算校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648130/

相关文章:

c# - 如何使用 EntityFramework 核心在插入中强制使用默认值?

c# - 当我们使用 new 关键字创建新的 DateTime(对象)时

c# - 使用 C++ 或 C# 进行 Windows 游戏编程

c# - 当 checkbox.checked 值设置为 true 时强制回发

c# - WPF DataGrid 更改未使用区域的单元格背景颜色

c# - RSA 在 C# (.NET 3.5) 中解密数据,在 php 5.3.2 中用 openssl 加密

C# 强制使用字典键

c# - 选择的组合框项目待修复

c# - 捕获所有(已处理或未处理的)异常

c# - 从另一个表单打开表单收到错误C#