我需要像这个网站一样计算校验和 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')
要获得相同的结果,您需要将字符串中的每两个字符视为一个以十六进制表示的字节。最后,使用
.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'));