0

我正在尝试对其进行编程,使其可以从 isbn 13 计算 isbn 10 的校验位。有人可以就如何执行它提供一些建议吗?

首先,在我继续计算isbn10的校验位之前,我如何实际循环遍历一个13位的isbn,删除前面的前缀978?先感谢您!:)

4

1 回答 1

0

这是删除前 3 位数字的方法:

NSString *str = @"978XXXXXXXXX";
NSString *newStr = [str substringFromIndex:3];

至于你的 ISBN10:

十位国际标准书号的最后一个字符是一个校验位,计算方式是每个数字乘以它在数字中的位置(从右数),然后将这些乘积的和取模 11 为 0。最远的数字右边(乘以 1)是校验位,选择它使总和正确。它可能需要具有值 10,表示为字母 X。例如,采用 ISBN 0-201-53082-1​​。产品的总和是0×10 + 2×9 + 0×8 + 1×7 + 5×6 + 3×5 + 0×4 + 8×3 + 2×2 + 1×1 = 99 ≡ 0模 11。所以 ISBN 是有效的。虽然这似乎比第一种方案更复杂,但可以简单地通过将所有乘积相加然后除以 11 来验证。通过将两个变量 t 和 sum 初始化为 0 并重复执行,无需任何乘法即可计算总和t = t + digit; sum = sum + t;(可以用 C 表示为 sum += t += digit;)。如果最终总和是 11 的倍数,则 ISBN 有效。

取自这里

于 2012-08-09T18:16:38.203 回答