混乱しているのは、「ISBN 10」と「ISBN 13」規格の違いのようです。
ISBN エージェンシーの Web サイトのFAQには次のように書かれています。
"Does the ISBN-13 have any meaning imbedded in the numbers?
The five parts of an ISBN are as follows:
1. The current ISBN-13 will be prefixed by "978"
2. Group or country identifier which identifies a national or geographic grouping of publishers
3. Publisher identifier which identifies a particular publisher within a group
4. Title identifier which identifies a particular title or edition of a title
5. Check digit is the single digit at the end of the ISBN which validates the ISBN"
したがって、978 は明らかに単なるフィラーです。その後、次の 9 つの数字は明らかに両方の数字で同じです。両方の数字の最後の桁はチェック ディジットであり、ISBN 10 と ISBN 13 では異なります。詳細については、このウィキペディアの記事を参照してください。ただし、2 つの式は次のとおりです。
ISBN 10 (一番上のもの) の場合、乗数 10-9-8-7-6-5-4-3-2-1 mod 11 を掛けたすべての桁の合計は 0 になるはずです。
0*10 + 7 *9 + 4*8 + 9*7 + 4*6 + 2*5 + 3*4 + 4*3 + 9*2 + 8*1 % 11 == 0
ISBN 13 (一番下) の場合、奇数桁の合計 * 1 と偶数桁の合計 * 3 は 0 である必要があります。これには、先頭の 978 が含まれます。 (これは、「user... 」が言及されていますが、ウィキペディアの記事に記載されているように少し異なります):
9*1 + 7*3 + 8*1 + 0*3 + 7*1 + 4*3 + 9*1 + 4*3 + 2*1 + 3*3 + 4*1 + 9*3 + 0*1 % 10 == 0
したがって、次のように ISBN 13 (下) コードから ISBN 10 コード (上) を取得できます。
isbnBaseCode = <9780749423490 from the 4th to 12th characters>
isbn10CheckDigit = 11 - (isbnBaseCode[0]*10 + isbnBaseCode[1]*9 + ... + isbnBaseCode[8]*2) % 11
isbnCode10 = isbnBaseCode + isbn10CheckDigit