计算十六进制字符串的8位校验和

时间:2018-11-20 13:45:06

标签: hex checksum complement

我需要使用JavaScript针对给定的十六进制字符串计算8位校验和。

我发现此网站(http://easyonlineconverter.com/converters/checksum_converter.html)正确地执行了该操作,但是我似乎无法在代码中重现相同的答案。

十六进制字符串示例: 6101599669594F7F13CC72F4FC942FFD8080FF0322FE8AFFFE0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000FA0000730000F2E02020207E3FFFE1656E67C13FFF7413CCBCBB

8位校验和答案:8A

我对此的理解方式:

  1. 将字符串分成两个十六进制值对(例如61、01、59、96),然后将它们加在一起:0x61 + 0x01 + 0x59 + 0x96 = 97 + 1 +89 + 150 =337。
  2. 将总数转换为二进制表示形式:337 = 0000000101010001
  3. 添加1:0000000101010010
  4. 采用8个最高有效位:01010010
  5. 翻转位(0s变为1s,1s变为0s):10101101
  6. 转换回十六进制:10101101 = AD

这个问题是答案应该是AF(不是AD)

问题:我为什么这么傻?我在做什么错呢?

0 个答案:

没有答案