c改成就是sum & 0xffff

我本一前段老大让给了一个c的代码让我检验16位数据
checkSum: function(buf, len) {
var i = 0;
var sum = 0;
var CheckSum = 0;
for (i = 0; i < len; i++) {
sum += buf++;
}
CheckSum = (sum >> 16) + (sum & 0xffff);
console.log('CheckSum++'+CheckSum);
return CheckSum;
},
代码是这样 运行发现有时是0 有时是负数

这是不要紧的,因为js里没有无符号整数类型,所以负数其实就是最高位是1的数。

那是不是要把-8191转成1还是转成8191