ISBN-10 与 ISBN-13 互转完全指南:校验位算法与 978 前缀讲清楚
用最朴素的加权求和取模算法,把 ISBN-10 和 ISBN-13 之间的转换、校验位重算、978 前缀以及图书编目里的实际坑位讲明白,附一个真实号码的逐步换算例子。
ISBN-10 与 ISBN-13 互转完全指南:校验位算法与 978 前缀讲清楚
做图书数据的人迟早会撞上这个问题:同一本书,旧系统里存的是 10 位 ISBN,新到的货却只印着 13 位。两个号码长得不一样,末位还对不上,很容易被当成两本书。其实它们指向同一本书,只是用了两套互不相关的校验公式。把这套换算关系搞清楚,数据就能对齐。
ISBN-10 与 ISBN-13 到底差在哪
ISBN-10 是 1970 年定下的十位号码,最后一位是校验位。ISBN-13 是 2007 年起全面启用的标准,本质上是一个 EAN-13 商品条码,前面带 978 或 979 这个图书专用前缀。
关键差别在校验位的算法。ISBN-10 用模 11,校验值范围是 0 到 10;ISBN-13 用模 10,校验位永远落在 0 到 9。同一本书的正文数字一样,但因为公式不同,两个号码的末位几乎总是不同。这也是为什么不能简单地在 ISBN-10 前面拼个 978 就交差。
ISBN-10 的模 11 校验位怎么算
ISBN-10 的前 9 位是正文,第 10 位是校验位。算法是给 9 位正文从左到右依次乘以权重 10、9、8、7、6、5、4、3、2,把乘积全部加起来,再对 11 取余。用 11 减去这个余数,得到的就是校验值。如果结果是 10,没有单个数字能表示,标准就写成罗马数字 X;这就是为什么有些 ISBN-10 末尾是 X 的原因。它表示数值 10,是号码的一部分,复制时千万别丢。
ISBN-13 的模 10 校验位与 978 前缀
ISBN-13 的算法更简单。13 位从左到右,奇数位乘 1、偶数位乘 3,交替进行,前 12 位的加权和对 10 取余,再用 10 减去这个余数(余数为 0 时校验位也为 0),得到第 13 位。
978 这个前缀叫 Bookland,是国际物品编码协会划给图书的号段。所有由 ISBN-10 升上来的 13 位号码都以 978 开头。等 978 用满后,又开了 979 号段。这里有个常被忽略的点:979 开头的书从来没有分配过 ISBN-10,所以 979 的 ISBN-13 转不回 10 位形式。靠谱的工具会直接告诉你没有,而不是凭空编一个。
一个真实例子:0-306-40615-2 转成 ISBN-13
拿经典的 ISBN-10 0-306-40615-2 走一遍:
- 去掉连字符,得到
0306406152,前 9 位正文是030640615,末尾的2是旧校验位,丢掉。 - 前面拼上 978 前缀,得到 12 位前缀体
978030640615。 - 重算模 10 校验位:
9×1 + 7×3 + 8×1 + 0×3 + 3×1 + 0×3 + 6×1 + 4×3 + 0×1 + 6×3 + 1×1 + 5×3 = 9+21+8+0+3+0+6+12+0+18+1+15 = 93,对 10 取余是 3,用 10 减去得 7。 - 最终 ISBN-13 是
978-0-306-40615-7。
注意末位从 2 变成了 7。这不是错,正是两套公式的必然结果。反过来,把 978-0-306-40615-7 转回 ISBN-10,就去掉 978,保留 030640615,重算模 11 校验位,又得回 2。
我自己在整理一份从三处粘来的参考文献时,就被这种末位差坑过:同一本书出现两条记录,一条 10 位一条 13 位,差点当成两本去重失败。后来全部统一转成 ISBN-13,带一致的连字符分组,再导进文献管理软件,问题就消失了。这种活手算太慢,我直接用 ISBN-10 转 ISBN-13 转换器 批量过一遍,纯数字形式还能干净地填进 CSV 的一列。
编目与出版里的实际坑
第一个坑是加 978 时保留了旧校验位。正确做法是只保留前 9 位正文,末尾重算。第二个坑是想给 979 号码硬算 ISBN-10,这种号码根本没有十位形式。第三个坑是把末尾的 X 当成 0 或删掉,校验立刻过不了。
送印环节还有一类需求:封底条码必须编码 EAN-13。如果作者给的是 ISBN-10,得先转成 978 开头的 13 位号码,确认校验位无误,再交给条码工具。想单独核验一个号码是否合法,可以配合 ISBN 校验工具 一起用,把转换和校验两步分开,出错的概率更低。
小结
ISBN-10 用模 11、ISBN-13 用模 10,转换的核心永远是丢掉旧校验位、按目标格式重算一个新的。记住 978 前缀、979 不可逆、以及 X 表示 10 这三件事,图书数据对齐就不会再出乱子。
Made by Toolora · Updated 2026-06-13