【问题标题】:misunderstanding of the term "checksum", stops me from writing algorithm对“校验和”一词的误解,使我无法编写算法
【发布时间】:2023-03-22 18:25:02
【问题描述】:

我正在尝试使用以下算法获取 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 = ;

有什么想法吗?

【问题讨论】:

  • 首先您应该告诉我们您使用的是哪种语言。其次,您应该正确键入校验和。无论如何,您可能想在维基百科中查找“CRC”和/或“MD5”。这应该给你一个开始。
  • 你的代码编译好了???
  • 有许多不同的校验和算法。我们需要您的任务细节来提供帮助。
  • I really want to know ASAP please 也无济于事。
  • 我在下面添加了同样的评论,但我想更多的人会在这里注意到它:这里有更具体的说明: rray a of ints 包含数字的数字。完成以下代码以将使用上述算法计算的该数字的校验和存储在变量校验和中。

标签: java checksum


【解决方案1】:

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

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

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

alert(sum);

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

您还可以查看a similar question on 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);

【讨论】:

  • 这里有更具体的说明: 数组 a of ints 包含数字的数字。完成以下代码以将使用上述算法计算的该数字的校验和存储在变量校验和中。
  • 您的意思是您发布的所有代码都已给出?而且你还没有说你在说什么校验和!
  • 一个UPC码:从右到左,奇数位(第一、第三、第五等)的数字相加,再乘以三;将偶数位(第二、第四、第六等)的数字相加;将 (1) 和 (2) 的结果相加,然后从大于或等于该总数的最接近的 10 倍数中减去总数。答案是校验位。
  • 似乎很容易,如果我有时间我会在明天发布代码 p.s.编辑您的问题,也许尝试编写代码并将其发布在编辑中...
猜你喜欢
  • 1970-01-01
  • 2011-05-13
  • 2021-05-11
  • 2020-03-21
  • 1970-01-01
  • 2012-10-16
  • 2010-09-22
  • 1970-01-01
相关资源
最近更新 更多