ISBN-10 验证流程用于校验图书的标识编号。它们通常包含连字符,看起来像这样:3-598-21508-8
ISBN-10 的格式是 9 位数字(0 到 9)加一个校验字符(只能是数字或 X)。如果校验字符是 X,它表示的值是“10”。这些编号可以带连字符,也可以不带连字符,用下面的公式可以检验它们是否有效:
(x1 * 10 + x2 * 9 + x3 * 8 + x4 * 7 + x5 * 6 + x6 * 5 + x7 * 4 + x8 * 3 + x9 * 2 + x10 * 1) mod 11 == 0
如果结果是 0,那么这个 ISBN-10 就是有效的,否则就是无效的。
我们来看 ISBN-10 3-598-21508-8。把它代入公式,得到:
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
结果等于 0,这就证明我们的 ISBN 是有效的。
给定一个字符串,程序要检查这个字符串是否是有效的 ISBN-10。 要实现这一点,需要在计算 ISBN 的校验位之前,先想清楚如何对字符串做预处理和解析。
程序应该既能验证带分隔连字符的 ISBN-10,也能验证不带分隔连字符的 ISBN-10。
在某些语言中,把字符串转换成数字可能很棘手。
现在更是如此,因为 ISBN-10 的校验位可能是 X(表示 10)。例如3-598-21507-X就是一个有效的 ISBN-10。
根据输入的 ISBN-10 生成一个有效的 ISBN-13(也许再用一个推导出来的校验器验证一遍)。
生成有效的 ISBN,甚至可以从给定的起始 ISBN 生成。