javascript - 这个函数计算什么样的校验和?

标签 javascript

这是一个函数,其中 bytes来自string ,并抓取每个字母的字符代码来创建 bytyes 的数组

function checksum(bytes) {
    var a = 0;
    var b = 0;

    for (var i = 0; i < bytes.length; i++) {
        a = (a + bytes[i]) % 0xff;
        b = (b + a) % 0xff;
    }

    return (b << 8) | a;
}

我主要对 % 0xff 的 Angular 色感到困惑和b << 8 。有人可以帮我解决这个问题吗?

最佳答案

a 等于所有元素之和模 255 b 等于 a 取模 255 后的所有值的总和(因此 1 乘以最后一个元素 + 2 乘以之前的元素......)

最终值是一个 16 位数字,其中高 8 位为 b,低 8 位为 a。

这实际上是弗莱彻的校验和

https://en.wikipedia.org/wiki/Fletcher%27s_checksum

关于javascript - 这个函数计算什么样的校验和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182206/

相关文章:

javascript - jquery点击不起作用

javascript - 按钮的单击在后面运行代码并且不回发页面(刷新)asp.net

javascript - 如何使用 office.js 命名和引用 Excel 范围

javascript - 如何使用静态 css 更改背景图像并进行维护?

javascript - 类属性的必要性,以定位 div 层

javascript - AngularJS 最佳实践 - 具有多种方法的工厂

javascript - 回调不是一个函数(但它是)

javascript - 如何使用 JavaScript 更改 CSS 显示属性?

javascript - 将整个文档移动到 iframe

javascript - 使用 SuiteScript,如何将 JavaScript 变量组合到字符串中?