2016-02-03 84 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打印機而被打印成一個整數。

相關問題