根据ISBN10的算法,校验位可以是X,也就是说,它可能不是数字。 但是谷歌API的输出:https://www.googleapis.com/books/v1/volumes?q=isbn:xxx使用ISBN10和ISBN13的整数类型。为什么呢?
P.S .: 以下是Google API输出的一部分:
industryIdentifiers = (
{
identifier = 7542637975;
type = "ISBN_10";
},
{
identifier = 9787542637970;
type = "ISBN_13";
}
);
答案 0 :(得分:1)
要将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月份,当使用相同的数字时,库存时间更长。对于像图书馆这样的档案功能来说不太好......但是......
答案 1 :(得分:0)
谢谢大家的有用答案。我终于发现谷歌的原始回复是字符串格式。它只是因为我的json打印机而打印成整数。