c#2字节计算校验和

时间:2014-07-08 19:51:15

标签: c# checksum

我需要校验和计算的帮助。 这是(不是我的代码!),而是来自规范 http://www.leupamed.at/?wpdmact=process&did=NC5ob3RsaW5r

private void CalcCheckSum(string msg, out byte checksum1, out byte checksum2)
{
byte cs1 = 0;
byte cs2 = 0;
// Always use "\n" as line break when calculating the checksum.
msg = msg.Replace("\r\n", "\n"); // Find and replace CR LF with LF
msg = msg.Replace("\r", "\n"); // Find and replace CR with LF.
for (int i = 0; i < msg.Length; i++)
{
cs1 += (byte) msg[i];
cs2 += cs1;
}
checksum1 = cs1;
checksum2 = cs2;
}

我必须创建一个这样的数据包:

<!--:Begin:Chksum:1:--><!--:Ack:Msg:3:0:--><!--:End:Chksum:1:184:62:-->

字符串<!--:Ack:Msg:3:0:-->是实际数据,我必须计算两个校验和字节(184和62)并将它们插入到最终数据包中(如上所示)。

但我的计算结果是10和62

var msg = "<!--:Ack:Msg:3:0:-->";
byte checksum1 = 0;
byte checksum2 = 0;
CalcCheckSum(msg, out checksum1, out checksum2);

我现在不知道如何计算正确的校验和值。 这是响应的校验和。不用于验证请求。 由于信誉不佳,我无法上传图片,因此请查看规范中的最后一行:https://drive.google.com/file/d/0B_Gs9q9SJteadVRwSVc1a2FmUTg/edit?usp=sharing 该确认消息根据请求是独立的。只有它必须响应请求消息ID 3。

解决方案吗

计算校验和后:

checksum1 = 256 - (10 + 62)= 184

checksum2 = 62

现在设备通信没有问题。

1 个答案:

答案 0 :(得分:0)

计算校验和后:

checksum1 = 256 - (10 + 62)= 184

checksum2 = 62

可能这个问题太具体了,没有人有这种校验和计算的经验。 现在设备通信没有问题。