我需要从字节数组计算校验和.它的一些串口包.我有这样的文字:
校验和是使用数据结构中所有字节的8位加法计算的.不考虑溢出(1字节).
8位如何添加?
在C#中需要它.
Jon*_*eet 17
直接加?好吧,你可以很容易地遍历所有字节:
public static byte ComputeAdditionChecksum(byte[] data)
{
byte sum = 0;
unchecked // Let overflow occur without exceptions
{
foreach (byte b in data)
{
sum += b;
}
}
return sum;
}
Run Code Online (Sandbox Code Playgroud)
或者,使用LINQ:
public static byte ComputeAdditionChecksum(byte[] data)
{
long longSum = data.Sum(x => (long) x);
return unchecked ((byte) longSum);
}
Run Code Online (Sandbox Code Playgroud)
我正在使用long以避免在长流上溢出 - 我假设它将小于2 55字节:)在实践中你可能会很好用int而不是long.
| 归档时间: |
|
| 查看次数: |
19367 次 |
| 最近记录: |