如何计算 CheckSum8 Modulo 256

问题描述 投票:0回答:1

我需要像这个网站一样计算校验和 https://www.scadacore.com/tools/programming-calculators/online-checksum-calculator/

对于十六进制 313233343536373839 站点计算 DD

我的函数得到168,到底该怎么做?

function calculateChecksum8Modulo256(data) {
  let checksum = 0;
  for (let i = 0; i < data.length; i++) {
    checksum = (checksum + data.charCodeAt(i)) % 256;
  }
  return checksum;
}

let res = calculateChecksum8Modulo256('313233343536373839')
javascript
1个回答
0
投票

要获得相同的结果,您需要将字符串中的每两个字符视为一个以十六进制表示的字节。最后,使用

.toString(16)
获得总和的十六进制表示。

function calculateChecksum8Modulo256(data) {
  let res = 0;
  for (let i = 0; i < data.length;)
    res = (res + parseInt(data.slice(i, i += 2), 16)) & 0xFF;
  return res.toString(16).toUpperCase();
}

console.log(calculateChecksum8Modulo256('313233343536373839'));

© www.soinside.com 2019 - 2024. All rights reserved.