isbn 13 から isbn 10 のチェック ディジットを計算するようにプログラムしようとしています。
まず、isbn10 のチェック ディジットの計算に進む前に、13 桁の isbn を実際にループし、先頭の 978 を削除するにはどうすればよいですか? 前もって感謝します!:)
これは、最初の 3 桁を削除する方法です。
NSString *str = @"978XXXXXXXXX";
NSString *newStr = [str substringFromIndex:3];
そしてあなたのISBN10については:
10 桁の国際標準図書番号の最後の文字は、各桁に数字の位置 (右から数えて) を掛け、これらの積の合計を 11 で割った値が 0 になるように計算されたチェック ディジットです。右側 (1 を掛けたもの) は、合計を正しくするために選択されたチェック ディジットです。文字 X で表される値 10 が必要になる場合があります。たとえば、ISBN 0-201-53082-1 を考えます。積の合計は0×10 + 2×9 + 0×8 + 1×7 + 5×6 + 3×5 + 0×4 + 8×3 + 2×2 + 1×1 = 99 ≡ 0
モジュロ 11 です。したがって、ISBN は有効です。これは最初のスキームよりも複雑に見えるかもしれませんが、すべての積を足し合わせてから 11 で割るだけで検証できます。2 つの変数 t と sum を 0 に初期化し、繰り返し実行することで、乗算を行わずに合計を計算できます。t = t + digit; sum = sum + t;
(これは、sum += t += digit; として C で表現できます)。最終的な合計が 11 の倍数である場合、ISBN は有効です。
ここから撮影。