【问题标题】:How is this hex checksum calculated?这个十六进制校验和是如何计算的?
【发布时间】:2020-01-01 22:16:04
【问题描述】:

我目前正在做一些与嵌入式系统交互的工作。在这个系统中,有一系列的十六进制配置值,最后是校验和。

四个值如下:

  • 0A346149
  • 0A346169
  • 0A3460C4
  • 0A346189

所需的“校验和”是 047A0000

我所拥有的非常有限的文档表明校验和是四个值的字节相加,但是我无法复制它。

这个校验和是如何计算出来的,你能一步一步完成吗?

【问题讨论】:

    标签: hex checksum data-integrity


    【解决方案1】:

    它是一次占用一个字节的所有单个字节的总和。

    >>> (0x0A + 0x34 + 0x61 + 0x49 + 
         0x0A + 0x34 + 0x61 + 0x69 + 
         0x0A + 0x34 + 0x60 + 0xC4 + 
         0x0A + 0x34 + 0x61 + 0x89)
    1146
    >>> 0x047a
    1146
    

    (可能它只是一个 16 位校验和,而 0000 字节不是其中的一部分。如果是,047A00000x47a 的不寻常字节排列 - 它既不是大端也不是小端.)

    【讨论】:

    • 这个系统完全是关于不常用的字节排列,可能是由于它的年龄。我认为您对 16 位校验和可能是正确的 - IIRC,该系统中的数据总线为 16 位宽。感谢您的快速回复。
    猜你喜欢
    • 2017-08-24
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2020-01-23
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    相关资源
    最近更新 更多