校验和的十六进制计算

时间:2011-09-01 15:31:55

标签: math hex

我不明白这个结果如何为零。这个呈现给我的是一个验证消息校验和的例子。

ED(12+01+ED=0)

这个结果怎么可能为零?

“1201是消息”ED是校验和,我的问题更多,我如何确定校验和?

感谢您的帮助。

祝你好运, FR

3 个答案:

答案 0 :(得分:7)

  

该结果如何为零?

校验和可能由一个字节表示。

一个字节可以存储256个不同的值,因此计算可能是模块256

由于0x12 + 0x01 + 0xED = 256,结果变为0。

  

如何确定校验和?

校验和是特定的字节值B,它使消息中的字节总和为+ B = 0(模256)。

所以,正如@LanceH在评论中所说,要弄清楚校验和B,你......

  1. 将消息中的字节值相加(比如它加起来为M
  2. compute M' = M % 256
  3. 现在,校验和B计算为256 - M'

答案 1 :(得分:2)

我不确定你的校验和细节,但在base-16算术中(以及在base-10中):

 base-16       base-10
-----------------------
   12            18
   01             1
+  ED           237
------------------------
  100           256

如果您的校验和是模256(16 ^ 2),那么您只保留最后2个基数为16的数字,因此您有00

答案 2 :(得分:0)

很明显,当你加上12 + 01 + ED时,结果溢出1个字节,实际上是十六进制数100.所以,如果你只取最后一个字节0x0100。你得到0。