-4

我正在尝试使用以下算法获取 UPC 代码的校验和:

  • 从右到左,将奇数位置(第一、第三、第五等)的数字相加
  • 将总数乘以三
  • 将偶数位置的数字相加(第二、第四、第六等)
  • 将 (1) 和 (2) 的结果相加,并且
  • 从大于或等于该总数的最接近的十的倍数中减去总数

结果应该是校验位。

这是我的代码:

int[] a = {1, 2, 3, 4, 5}
checksum = 0;
int i = 0;

while ( a[i] < a.length-1  )
{
  checksum += a[i] + a[i - 1] ;
  i++;
}
checksum = ;

有任何想法吗?

4

1 回答 1

0

如果您只想对数组的所有条目求和,您可以这样做(未经测试):

var sum = 0;
var vars = [1, 2, 3, 4, 5];

vars.forEach(function (callback) {
    sum = sum + callback;
})

alert(sum);

这不是真正的校验和,也可能有 5,2,3,1,4

您还可以查看关于 SO 的类似问题。它是关于如何获取文件的 md5 校验和;您也可以将它用于字符串。

我不能更具体地回答,因为你的问题不是。

编辑

如果我正确理解最后一行,这应该有效(未经测试):

var vars = [1, 2, 3, 4, 5];
var sum135;
var sum246;
var i = 0;

while (i < vars.length) {
    sum135 = sum135 + vars[i];
    sum246 = sum246 + vars[i + 1];
    i = i + 2;
}

sum135 = sum135 * 3;
var checksum = (sum135 + sum246) * (sum135 + sum246 + 10) - (sum135 + sum246);
于 2013-10-05T16:48:36.533 回答