Math 我的5字节数据校验和不正确

Math 我的5字节数据校验和不正确,math,hex,byte,bit-manipulation,checksum,Math,Hex,Byte,Bit Manipulation,Checksum,我正在处理来自一个串行硬件的6字节消息。 制造商在其手册中指出,每条消息的校验和(其第6字节)由“消息其余部分总和的低位字节”组成 我还没有尝试过所有这些示例,让我展示一下我在第一个“剖析”示例上的工作: 这是提供的公式: 0xB2+0x00+0x69+0x1A+0x83=0x68的低位字节 所以,总和是0x1B8,如果我取前8位,我得到0xB8 六羟甲基三聚氰胺六甲醚。。。我做错了吗 我想了想,然后猜测,哦,也许他们只是做一个按位操作,这在旧硬件上很常见,对吗? 所以我写下了每个部分的片段

我正在处理来自一个串行硬件的6字节消息。 制造商在其手册中指出,每条消息的校验和(其第6字节)由“消息其余部分总和的低位字节”组成

我还没有尝试过所有这些示例,让我展示一下我在第一个“剖析”示例上的工作:

这是提供的公式:

0xB2+0x00+0x69+0x1A+0x83=0x68的低位字节

所以,总和是0x1B8,如果我取前8位,我得到0xB8 六羟甲基三聚氰胺六甲醚。。。我做错了吗

我想了想,然后猜测,哦,也许他们只是做一个按位操作,这在旧硬件上很常见,对吗? 所以我写下了每个部分的片段,并将系列XORed在一起

  • 0xB2^0x00=0xB2(duh)
  • 0xB2^0x69=0xDB
  • 0xDB^0x1A=0xC1
  • 0xC1^0x83=0x42
我是用手工和计算器做的。同样的结果

我能够在我的程序中重现我的计算结果,我的校验和与硬件输出的非常不同。手动型号与我拥有的硬件匹配

查看求和的每个部分的二进制文件,我不确定是否可以看到每个部分的文档输出的清晰模式。在某些校验和中,如IPv4报头,进位被移位或添加回校验和,这里会是这种情况吗

我的问题是:

我是不是在计算校验和时犯了数学错误?
任何帮助都将不胜感激!谢谢。

我刚刚用Windows RT calculator攻击了所有示例,其他所有()都很好-只是这是错误的。这看起来像是一个简单的文档输入错误。

是的,有一位同事也提出了这个问题。不幸的是,硬件也出现了错误,但是是一个常数。我假设规范中的某些内容发生了变化,文档也过时了。