CI Field
校验和
停止
在第二页中,我们可以找到一个有效数据帧的示例:
68 03 03 68 53 01 BB 0F 16
以十六进制表示,校验和为0F。不幸的是,我一定做错了事,因为我无法达到该值。
有人可以解释一下该算法如何找到校验和?
#1 楼
仅有一个样本永远不足以回答校验和查询,您需要一堆样本进行核对并找到模式,所以查看链接的pdf似乎很清楚
跳过开始并求和数据并提取至少两个字节
skip sum mask
x,x,x,x | y,y,... 0x000000ff = checksum
,所以您发布的示例将是
skip | sum
68 , 3 ,3 68 | 53 , 01 , bb | =
checksum
"{0:X2}" -f ((0x53+0x1+0xbb) -band 0x000000ff) = 0x0f seems to match
在pdf中的其他序列上运行此程序似乎很合算
PS C:\> $a = "{0:X2}" -f ((0x53+0xfe+0x51+0x01+0x7a+0x01) -band 0x000000ff) ; $a
1E
PS C:\> $a = "{0:X2}" -f ((0x73+0x01+0x51+0x01+0x7A+0x02 ) -band 0x000000ff) ; $a
42