C# 从十六进制值数组求和以计算校验和无效

C# 从十六进制值数组求和以计算校验和无效,c#,hex,checksum,C#,Hex,Checksum,我有一个包含以下十六进制值的数组: A8、00、00、11、01、44、33、28、0C、15、2B、00、28、FF、00、00、00、00、00、00、FF、80、7F、00、00、00、00、00、00、00、FF、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、0

我有一个包含以下十六进制值的数组:

A8、00、00、11、01、44、33、28、0C、15、2B、00、28、FF、00、00、00、00、00、00、FF、80、7F、00、00、00、00、00、00、00、FF、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00、00,铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁、铁

我需要从它们中计算校验和,我知道的结果是C5

我得到了以下信息,我认为这些信息是模糊的,只是模糊不清:

  • 校验和是通过对值求和得到的,结果也是“使用十六进制中最右边的字节”

  • 所有求和数据的最低有效字节

  • 添加8位宽的数据

如果您喜欢将其作为十进制:

168,0,0,, 17, 1, 68, 51, 40, 12, 21, 43, 0, 40, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 255, 0, 0, 0, 254, 255, 128, 127, 0, 0, 12,0,3,53,0,0,0

小数
校验和为197

任何帮助都将不胜感激

编辑:

在回答的问题中,我基本上尝试了循环遍历这些值,并对LSB和MSB求和。详情如下:

int LSB = 0; 
int MSB = 0;
foreach (Byte value in byteArray) {
    LSB += (value & 1);
    MSB += (value >> 7);
}
//Expected Checksum is 197
//LSB == 52
//MSB == 60

谢天谢地,我得到了更多的信息,我可以发布解决方案

int chk = 0;
foreach (Byte value in byteArray) {
    chk += value;
}
chk = (chk & 255); 

因此,本质上我需要对所有字节求和,然后使用结果的LSB。

您尝试了什么代码?本质上我尝试了对每个字节的LSB和MSB求和,例如:
int LSB=0;int-MSB=0;foreach(字节数组中的字节值){LSB+=(值&1);MSB+=(值>>7);}