2016-02-03 56 views
0

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

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

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

ISBN-10的最后一位实际上是以11为基数; X表示10.您可以想出一种方法来将整个事件保存在一个整数中,但您需要使用64位整数,因为11 * 10^10> 2^32。或者你可以使用一个字符串,因为在阅读ISBN时你可能只需要检查一次有效性。 –

+0

谢谢Daniel。我现在明白了。但是有没有人知道一个真正的ISBN-10与X和结束?我真的很想知道在这种情况下,谷歌API的输出是什么?以及我的JSON解析器将如何发展? –

+0

“'Book of Days'by Sara Reinke,ISBN 1-55404-295-X” - http://www.mobileread.com/forums/showthread.php?t=149033 –

回答

1

ISBN-10在理论上应该被替换ISBN-13在2007年显然,这是不可能的已售出出版物,一些出版商仍然保持ISBN-10而不是更改为ISBN-13(与一些制造商维护UPC-A而不是EAN-13或GSi相同)。

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

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

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

根据您的应用,您可能希望考虑如何处理ISMN(音乐)或ISSN(期刊)号码。期刊更成问题。条形码扩展通常会产生一个月或一周的发布,但-13版本保持不变。对于卖方或这些物品,如,无论 -01将是1月,这些都是好的,而且这些将在随后的1月份完全过时(因此不再存货)将被使用。对于像图书馆这样的档案功能来说不是那么好...

0

谢谢大家的帮助。我终于找到了谷歌的原始响应是字符串格式。它只是因为我的json打印机而被打印成一个整数。

相关问题