1

根据 ISBN10 的算法,校验位可以是 X,也就是说,它可能不是数字。但谷歌 API 的输出:https ://www.googleapis.com/books/v1/volumes?q=isbn: xxx 对 ISBN10 和 ISBN13 使用整数类型。为什么?

PS:以下是google API输出的一部分:

industryIdentifiers =                 (
                        {
        identifier = 7542637975;
        type = "ISBN_10";
    },
                        {
        identifier = 9787542637970;
        type = "ISBN_13";
    }
);
4

2 回答 2

2

ISBN-10 理论上应该到 2007 年就已经被 ISBN-13 取代了。显然,这对于已经售出的出版物来说是不可能的,并且一些出版商仍然保持 ISBN-10 而不是改为 ISBN-13(与一些制造商维护 UPC-A 而不是 EAN-13 或 GS​​i。)

要将 USBN-10 转换为 USBN-13,只需取 USBN 的前 9 位数字,加上前缀,978然后使用标准 EAN 算法计算校验位。使用 13 位结果作为定位项目的密钥(作为 64 位无符号整数)。

您始终可以通过删除前 3 位数字和校验位并使用 ISBN-10 算法重新计算校验字符来提取 ISBN-10。

这样,您只需要记录 13 位的版本。如果您有 ISBN-10(由扫描仪读取)或者您需要生成 ISBN-10(无论出于何种目的),只需应用适当的转换算法即可。

根据您的应用程序,您可能希望考虑如何处理 ISMN(音乐)或 ISSN(期刊)号码。期刊问题更大。条形码扩展通常会产生一个月或一周的发布时间,但-13版本保持不变。这对于卖家或此类物品来说很好,因为无论-01 是 1 月,当使用相同的数字时,这些都将在下一个 1 月过时(因此不再有库存)。不过,对于像图书馆这样的档案功能来说不是很好……

于 2016-02-03T06:06:35.170 回答
0

谢谢大家的有用答案。我终于发现谷歌的原始回复是字符串格式的。仅仅因为我的 json 打印机,它就像一个整数一样被打印出来。

于 2016-02-03T08:48:16.040 回答