6.7 KiB
6.7 KiB
title | author | date | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|
isbn10 –> isbn13 | kazu634 | 2007-12-02 |
|
|
『新版Perl言語プログラミングレッスン入門編』を読んでいます。現在、ハッシュの勉強中。色々できて楽しそうだ。少し慣れてきたら、isbn10をisbn13に変換するPerlスクリプトを作ってみようと思う(「車輪の再発明」なのは承知の上。練習したいのです)。
というわけで、isbn13の仕組みを調べてみた。Wikipediaによれば、
ISBNは13桁のコードで表され、通常5つのパートからなる。
ISBNnnn – ● – AAAA – BBBB – C
●、A、Bの各部分の桁数は決まっておらず、合計で9桁の範囲内でそれぞれの部分は増減する。
- n部分 – 「接頭記号」: nnn は 978 または 979 のいずれか(数字3桁)である。
- ●部分 – 「グループ記号」:2006年以前と基本的に同じ。上記解説を参照。ただし、接頭記号が異なれば、グループ記号が同じでも異なる言語圏を指す可能性もある。
- A部分 – 「出版者記号」:2006年以前と同じ。上記解説を参照。
- B部分 – 「書名記号」:2006年以前と同じ。上記解説を参照。
- C部分 – 「チェックデジット」: 0 – 9 の数字1桁が入る。以前のISBNのチェックデジットとは計算法が異なり、10桁→13桁に変換する際は再計算が必要となる。
各パートの間は、ハイフン(またはスペース)で区切りを付けるのが正式な表示法である。(区切りを付けなくても書籍を特定する上での問題はない。)
ということらしいので、●-AAAA-BBBBの部分はisbn10と等しいらしい。つまり、図書の場合「978-●-AAAA-BBBB」からある計算式を用いてCを求めることになる。Cの計算式は、例として ISBN978-4-10-109205-□で考えてみると
- 9×1 + 7×3 + 8×1 + 4×3 + 1×1 + 0×3 + 1×1 + 0×3 + 9×1 + 2×3 + 0×1 + 5×3 = 9 + 21 + 8 + 12 + 1 + 0 + 1 + 0 + 9 + 6 + 0 + 15 = 82
- 82 ÷ 10 = 8 あまり 2
- 10 – 2 = 8
となるらしい。つまり(1)の計算は
こんな感じになるわけだから、「(奇数桁の数字の合計×1) + (偶数桁の数字の合計×3)」ということか。