C# 从十六进制值数组求和以计算校验和无效
我有一个包含以下十六进制值的数组: 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 我得到了以下信息,我认为这些信息是模糊的,只是模糊不清: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
- 校验和是通过对值求和得到的,结果也是“使用十六进制中最右边的字节”
- 所有求和数据的最低有效字节
- 添加8位宽的数据
校验和为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);}