チェックデジットの計算

バーコードのチェックデジットの計算

Modulo 10

ActiveBarcode: Info ActiveBarcodeはバーコードのチェックデジットを自動的に計算いたします。
これらのチェックデジットを手動で計算したり加算したりする必要はございません。本ドキュメントは、完全性を期すためだけに記載されております。
モジュロに従ったチェックサムの計算 10:
モジュロ10によるチェックデジットは、EANコード、例えばEAN-13で使用される。

EANコードでは、チェックデジットはモジュロ10計算法に従って重み付け3で計算される。 重み付け3は、右から1桁目から始まる。 その後、各桁に重み付けが掛けられる。 これらの結果は合計される。 モジュロ10はこの合計から計算される。まず和を10で割る。 割り算の残りは10から引かれる。 この減算の結果がチェックサム/チェックデジットである。

以下は、EAN-13 コードを使用した Modulo 10 の計算例である:

数字: 4 0 0 7 6 3 0 0 0 0 1 1
重量: 1 3 1 3 1 3 1 3 1 3 1 3
結果: 4+0+0+21+6+9+0+0+0+0+1+3 = 44
チェックサムの計算: 10の次の倍数までの足し算。 (50)
チェックデジット 6


コード25コードでは、チェックデジットもモジュロ10の計算方法に従って重み付け3で計算される。 しかし、重み付け3は、左から最初の有用な桁から始まる。 そして、個々の有用な数字に重み付けが掛けられる。 これらの結果は合計される。 モジュロ10はこの和から計算される。 まず、合計を10で割る。 割り算の余りを10から引く(10との差を計算する)。 この減算の結果がチェックサム/チェックデジットである。

以下はコード25を使ったモジュロ10の計算例です:

数字: 1 2 3 4 5
重量: 3 1 3 1 3
結果: 3+2+9+4+15 = 33
チェックサムの計算: 10の次の倍数までの足し算。 (40)
チェックデジット 7


LeitcodeIdentcode では、チェックデジットもモジュロ10の計算方法に従って計算される。 しかし、ここでは重み付けが違う: ウエイトは奇数ポジションが4、ストレートポジションが9。 例を挙げよう:

数字: 2 3 6 6 9 0 1 2 0 1 2 3 0
重量: 4 9 4 9 4 9 4 9 4 9 4 9 4
結果: 8+27+24+54+36+0+4+18+0+9+8+27+0 = 215
チェックサムの計算: 10の次の倍数までの足し算。 (220)
チェックデジット 5


EAN-14 / ITF-14 / SCC-14 / DUN-14 コードを使用した Modulo 10 の計算例:

数字: 0 4 0 0 7 6 3 0 0 0 0 1 1
重量: 3 1 3 1 3 1 3 1 3 1 3 1 3
結果: 0+4+0+0+21+6+9+0+0+0+0+1+3 = 44
チェックサムの計算: 10の次の倍数までの足し算。 (50)
チェックデジット 6

Modulo 11

ActiveBarcode: Info ActiveBarcodeはバーコードのチェックデジットを自動的に計算いたします。
これらのチェックデジットを手動で計算したり加算したりする必要はございません。本ドキュメントは、完全性を期すためだけに記載されております。
モジュロに従ったチェックサムの計算 11:
モジュロ11によるチェックデジットは、例えばPZNで使われている。モデューロ11はISBNにも使われる。

PZN
まず、すべての桁に個別に乗数が掛けられる。 乗数は桁1の位置に対応する。 その結果生じたすべての製品を加える。その結果を11で割る。 その余りがチェックデジットとなる。 チェックデジットが 10 の場合、この番号を PZN として使用してはならない。 したがって、このコードは無効となる。

計算例:

数字: 6 3 1 9 4 2
重量: 2 3 4 5 6 7
結果: 12+9+4+45+24+14 = 108
チェックサムの計算: 108 / 11 = 9 残り 9
チェックデジット 9


ISBN-10とISSNのチェックサム
まず、すべての桁に個別に乗数が掛けられる。 乗数は、右から1桁目の位置に対応する。 その結果生じたすべての製品を加える。その結果を11で割る。 その余りを11から引いたものがチェックデジットとなる。
このチェックサム手順で結果11が計算された場合、チェックサムは0である。 というのも、前のステップ(11で割った余り)で11が計算できないからである。
また、10という数字が必要になることもある。 10はXで表される: "3-928444-00-X"。

計算例:

数字: 3 9 2 8 4 4 4 0 4
重量: 10 9 8 7 6 5 4 3 2
結果: 30 + 81 + 16 + 56 + 24 + 20 + 16 + 0 + 8 = 251
チェックサムの計算: 251 / 11 = 22 残り 9 -> 11 - 9 = 2
チェックデジット 2

Modulo 16

ActiveBarcode: Info ActiveBarcodeはバーコードのチェックデジットを自動的に計算いたします。
これらのチェックデジットを手動で計算したり加算したりする必要はございません。本ドキュメントは、完全性を期すためだけに記載されております。
モジュロに従ったチェックサムの計算 16:
モジュロ16は、バーコードシンボロジーCodabarで使用されている。 以下は、モジュロ16に従ったチェックデジットの計算方法の例である:

数字: A 7 8 9 A
参照番号: 16 7 8 9 16
参照番号の合計: 56
チェックサムの計算: 56 / 16 = 3 残り 8
difference: 16 - 8 = 8
チェックデジット 参照番号 8 = 8

参照番号:
00 = 0
01 = 1
02 = 2
03 = 3
04 = 4
05 = 5
06 = 6
07 = 7
08 = 8
09 = 9
10 = -
11 = $
12 = :
13 = /
14 = .
15 = +
16 = A
17 = B
18 = C
19 = D

Modulo 43

ActiveBarcode: Info ActiveBarcodeはバーコードのチェックデジットを自動的に計算いたします。
これらのチェックデジットを手動で計算したり加算したりする必要はございません。本ドキュメントは、完全性を期すためだけに記載されております。
モジュロに従ったチェックサムの計算 43:
モジュロ43によるチェックデジットは、例えばコード39で使用される。

まず、コードのすべての文字に参照番号が割り当てられる。 これらの参照番号は合計に加算される。 この合計を43で割る。 この分割の残りはチェックサムに対応し、参照番号に対応する文字に置き換えられる。

計算例:

数字: 1 5 9 A Z
参照番号: 1 +5 +9 +10 +35
参照番号の合計: 60
チェックサムの計算: 60 / 43 = 1 残り 17
チェックデジット "H" (参照番号 17)

参照番号:
00 0
01 1
02 2
03 3
04 4
05 5
06 6
07 7
08 8
09 9
10 A
11 B
12 C
13 D
14 E
15 F
16 G
17 H
18 I
19 J
20 K
21 L
22 M
23 N
24 O
25 P
26 Q
27 R
28 S
29 T
30 U
31 V
32 W
33 X
34 Y
35 Z
36 -
37 .
38 Space
39 $
40 /
41 +
42 %


モジュロ43によるチェックサム計算のコード例

モジュロ43に従ってチェックサムを計算するためのエクセルVBAコード:
' calc modulo 43
‘ returns the input string plus the check character
' demo for www.activebarcode.com
Public Function MOD43CheckChar(sValue As String) As String
    Const charSet As String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"
    Dim i As Integer
    Dim T As Long
    For i = 1 To Len(Trim(UCase(sValue)))
        T = InStr(charSet, Mid(sValue, i, 1)) - 1 + T
    Next i
    MOD43CheckChar = sValue & Mid$(charSet, (T Mod 43 + 1), 1)
End Function

Modulo 47

ActiveBarcode: Info ActiveBarcodeはバーコードのチェックデジットを自動的に計算いたします。
これらのチェックデジットを手動で計算したり加算したりする必要はございません。本ドキュメントは、完全性を期すためだけに記載されております。
モジュロに従ったチェックサムの計算 47:
モジュロ47によるチェック文字は、例えばコード93で使用される。

コード93は、いわゆるCチェックサムとKチェックサムの2つのチェックサムを使用します。 どちらも同じ原理で計算される。 しかし、KチェックサムにはCチェックサムも含まれている。

計算中、まずコードのすべての文字に参照番号が割り当てられる。 コードの各桁には重み付けがされており、後ろから段階的に増えていった。 従って、最後尾はウェイト1、最後尾はウェイト2......となる。 それぞれの場合、参照番号にウェイトが掛けられる。 その結果、個々の結果が合計される。

この合計を47で割る。 この除算の残りがチェックサムに相当し、これは参照番号を使って文字としてコード化される。

Kチェックサムも同様に決定される。 しかし今回は、最初のチェックサムと同様に、コードの文字列とCチェックサムが基礎として使われる。 最初に決定されたチェックサムは、2番目のチェックサムの計算に含まれる。

計算例:

Checksum with Modulo47

参照番号 Code 93:

00 0
01 1
02 2
03 3
04 4
05 5
06 6
07 7
08 8
09 9
10 A
11 B
12 C
13 D
14 E
15 F
16 G
17 H
18 I
19 J
20 K
21 L
22 M
23 N
24 O
25 P
26 Q
27 R
28 S
29 T
30 U
31 V
32 W
33 X
34 Y
35 Z
36 -
37 .
38 Space
39 $
40 /
41 +
42 %
43 ($)
44 (%)
45 (/)
46 (+)
- * Start/Stop