iPhone将ISBN13转换为ISBN10

时间:2012-08-09 17:57:38

标签: iphone ios xcode4.2 barcode

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

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

1 个答案:

答案 0 :(得分: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 modulo 11.因此ISBN有效。 虽然这可能看起来比第一个方案更复杂,但可以简单地通过将所有产品加在一起然后除以11来验证。通过将两个变量t和sum初始化为0并重复执行{可以在没有任何乘法的情况下计算总和。 {1}}(可以用C表示为sum + = t + = digit;)。如果最终总和是11的倍数,则ISBN有效。

取自here