我正在尝试对它进行编程,这样它就可以从isbn 13计算出isbn 10的校验位。有人能给出一些如何实现的建议吗?
首先,在我继续计算isbn10的校验位之前,我如何实际循环13位isbn,去掉前面的前缀978?提前感谢!:)
发布于 2012-08-10 02:16:38
下面是删除前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有效。
摘自here。
https://stackoverflow.com/questions/11889266
复制相似问题