Math 校验和的十六进制计算

Math 校验和的十六进制计算,math,hex,Math,Hex,我不明白这个结果怎么会是零。这是给我的一个验证消息校验和的示例 ED(12+01+ED=0) 这个结果怎么可能是零 “1201是信息”ED是校验和,我的问题是,如何确定校验和 谢谢你的帮助 致以最良好的祝愿, FR 这个结果怎么可能是零? 校验和大概由一个字节表示 一个字节可以存储256个不同的值,因此计算可能在模块256中完成 由于0x12+0x01+0xED=256,结果变为0 如何确定校验和? 校验和是特定的字节值B,它使消息+B中的字节之和=0(模256) 因此,正如@LanceH在评

我不明白这个结果怎么会是零。这是给我的一个验证消息校验和的示例

ED(12+01+ED=0)
这个结果怎么可能是零

“1201是信息”ED是校验和,我的问题是,如何确定校验和

谢谢你的帮助

致以最良好的祝愿, FR

这个结果怎么可能是零?

校验和大概由一个字节表示

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

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

如何确定校验和?

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

因此,正如@LanceH在评论中所说的,要计算校验和
B
,您

  • 将消息中字节的值相加(假设其相加为
    M
  • 计算
    M'=M%256
  • 现在,校验和
    B
    计算为
    256-M'
  • 这个结果怎么可能是零?

    校验和大概由一个字节表示

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

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

    如何确定校验和?

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

    因此,正如@LanceH在评论中所说的,要计算校验和
    B
    ,您

  • 将消息中字节的值相加(假设其相加为
    M
  • 计算
    M'=M%256
  • 现在,校验和
    B
    计算为
    256-M'

  • 我不确定您的校验和详细信息,但在base-16算术(以及base-10)中:


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

    我不确定校验和的详细信息,但使用基数为16的算术(以及基数为10的算术):


    如果你的校验和是模256(16^2),你只保留最后2个基16位,所以你有
    00

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

    来详细说明一下。将消息的字节相加。取256的和。从256中减去这个数字,这就是你的校验和。将消息的字节相加。取256的和。从256中减去这个数字,这就是你的校验和。
     base-16       base-10
    -----------------------
       12            18
       01             1
    +  ED           237
    ------------------------
      100           256