Tarkistusnumeron laskeminen

Barcode-tarkistussumman laskeminen

Modulo 10

ActiveBarcode: Info ActiveBarcode laskee automaattisesti tarkistusnumerot viivakoodeille.
Näitä tarkistuslukuja ei tarvitse laskea tai lisätä manuaalisesti. Tämä dokumentaatio on liitetty mukaan vain täydellisyyden vuoksi.
Modulo-menetelmän mukainen tarkistussumman laskeminen 10:
Modulo 10 -tarkistusnumeroa käytetään EAN-koodeissa, esim. EAN-13.

EAN-koodien tarkistusnumero lasketaan modulo 10 -laskentamenetelmällä painotuksella 3. Painotus 3 alkaa oikealta ensimmäisestä numerosta. Sitten yksittäiset numerot kerrotaan painotuskertoimella. Nämä tulokset lasketaan yhteen. Modulo 10 lasketaan tästä summasta. Ensin summa jaetaan 10:llä. Loput osastosta vähennetään 10:stä. Tämän vähennyslaskun tulos on tarkistussumma/tarkistusnumero.

Seuraavassa on laskelmaesimerkki Modulo 10:stä käyttäen EAN-13-koodia:

Numerot: 4 0 0 7 6 3 0 0 0 0 1 1
Paino: 1 3 1 3 1 3 1 3 1 3 1 3
Tulokset: 4+0+0+21+6+9+0+0+0+0+1+3 = 44
Laske tarkistussumma: Lisäys seuraavaan 10:n kerrannaiseen. (50)
Tarkistusnumero 6


Koodilla 25 tarkistusnumero lasketaan myös painotuksella 3 modulo 10 -laskentamenetelmän mukaisesti. Painotus 3 alkaa kuitenkin ensimmäisestä käyttökelpoisesta numerosta vasemmalta. Sitten yksittäiset käyttökelpoiset numerot kerrotaan painotuksella. Nämä tulokset lasketaan yhteen. Modulo 10 lasketaan tästä summasta. Ensin summa jaetaan 10:llä. Loput jaosta vähennetään 10:stä (laske ero 10:een). Tämän vähennyslaskun tulos on tarkistussumma/tarkistusnumero.

Seuraavassa on laskuesimerkki Modulo 10:lle käyttäen koodia 25:

Numerot: 1 2 3 4 5
Paino: 3 1 3 1 3
Tulokset: 3+2+9+4+15 = 33
Laske tarkistussumma: Lisäys seuraavaan 10:n kerrannaiseen. (40)
Tarkistusnumero 7


Leitcode- ja Identcode-koodien kanssa tarkistusnumero lasketaan myös modulo 10 -laskentamenetelmän mukaisesti. Tässä painotus on kuitenkin erilainen: Painotus 4 parittomille paikoille ja 9 parillisille paikoille. Tässä on esimerkki:

Numerot: 2 3 6 6 9 0 1 2 0 1 2 3 0
Paino: 4 9 4 9 4 9 4 9 4 9 4 9 4
Tulokset: 8+27+24+54+36+0+4+18+0+9+8+27+0 = 215
Laske tarkistussumma: Lisäys seuraavaan 10:n kerrannaiseen. (220)
Tarkistusnumero 5


Laskelmaesimerkki Modulo 10:lle käyttäen EAN-14 / ITF-14 / SCC-14 / DUN-14 -koodia:

Numerot: 0 4 0 0 7 6 3 0 0 0 0 1 1
Paino: 3 1 3 1 3 1 3 1 3 1 3 1 3
Tulokset: 0+4+0+0+21+6+9+0+0+0+0+1+3 = 44
Laske tarkistussumma: Lisäys seuraavaan 10:n kerrannaiseen. (50)
Tarkistusnumero 6

Modulo 11

ActiveBarcode: Info ActiveBarcode laskee automaattisesti tarkistusnumerot viivakoodeille.
Näitä tarkistuslukuja ei tarvitse laskea tai lisätä manuaalisesti. Tämä dokumentaatio on liitetty mukaan vain täydellisyyden vuoksi.
Modulo-menetelmän mukainen tarkistussumman laskeminen 11:
Modulo 11 -tarkistusnumeroa käytetään esimerkiksi PZN-numerossa. Modulo 11 -tarkistusnumeroa käytetään myös ISBN-numerossa.

PZN
Ensin kaikki numerot kerrotaan yksitellen kertoimella. Kerroin vastaa numeron 1 sijaintia. Kaikki tuloksena saadut tuotteet lasketaan yhteen. Tuloksesta lasketaan sitten 11:n osainen osuus. Tuloksena oleva jäännös on tarkistusnumero. Jos tarkistusnumero on 10, tätä numeroa ei saa käyttää PZN-numerona. Koodi olisi siis virheellinen.

Laskelmaesimerkki:

Numerot: 6 3 1 9 4 2
Paino: 2 3 4 5 6 7
Tulokset: 12+9+4+45+24+14 = 108
Laske tarkistussumma: 108 / 11 = 9 Jäännös 9
Tarkistusnumero 9


ISBN-10- ja ISSN-tarkistussumma
Ensin kaikki numerot kerrotaan yksitellen kertoimella. Kerroin vastaa numeron 1 sijaintia oikealta. Kaikki tuloksena saadut tuotteet lasketaan yhteen. Tuloksesta lasketaan sitten 11:n osainen osuus. Tuloksena oleva jäännös vähennetään luvusta 11, jolloin saadaan tarkistusnumero.
Jos tämän tarkistussumman laskentamenetelmän tulos on 11, tarkistussumma on 0. Tämän seurauksena 0:aa ei voitu laskea, koska edellisessä vaiheessa (jäännös jakamalla 11:llä) 11 on mahdoton tulos.
Saattaa myös tapahtua, että numero 10 on pakollinen. 10 on merkitty X:llä: "3-928444-00-X".

Laskelmaesimerkki:

Numerot: 3 9 2 8 4 4 4 0 4
Paino: 10 9 8 7 6 5 4 3 2
Tulokset: 30 + 81 + 16 + 56 + 24 + 20 + 16 + 0 + 8 = 251
Laske tarkistussumma: 251 / 11 = 22 Jäännös 9 -> 11 - 9 = 2
Tarkistusnumero 2

Modulo 16

ActiveBarcode: Info ActiveBarcode laskee automaattisesti tarkistusnumerot viivakoodeille.
Näitä tarkistuslukuja ei tarvitse laskea tai lisätä manuaalisesti. Tämä dokumentaatio on liitetty mukaan vain täydellisyyden vuoksi.
Modulo-menetelmän mukainen tarkistussumman laskeminen 16:
Modulo 16:ta käytetään Codabar-viivakoodisymboliikassa. Tässä on esimerkki siitä, miten tarkistusnumero lasketaan Modulo 16:n mukaan:

Numerot: A 7 8 9 A
Viitenumerot: 16 7 8 9 16
Viitenumeroiden summa: 56
Laske tarkistussumma: 56 / 16 = 3 Jäännös 8
difference: 16 - 8 = 8
Tarkistusnumero Viitenumero 8 = 8

Viitenumerot:
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 laskee automaattisesti tarkistusnumerot viivakoodeille.
Näitä tarkistuslukuja ei tarvitse laskea tai lisätä manuaalisesti. Tämä dokumentaatio on liitetty mukaan vain täydellisyyden vuoksi.
Modulo-menetelmän mukainen tarkistussumman laskeminen 43:
Modulo 43:n mukainen tarkistusnumero käytetään esimerkiksi Code 39:ssä.

Ensinnäkin, viitenumerot annetaan kaikille koodin merkeille. Nämä viitenumerot lisätään kokonaissummaan. Tämä summa jaetaan 43:lla. Loput tästä osasta vastaa tarkistussummaa, joka korvataan viitenumeroa vastaavalla merkillä.

Laskelmaesimerkki:

Numerot: 1 5 9 A Z
Viitenumerot: 1 +5 +9 +10 +35
Viitenumeroiden summa: 60
Laske tarkistussumma: 60 / 43 = 1 Jäännös 17
Tarkistusnumero "H" (Viitenumero 17)

Viitenumerot:
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 %


Koodiesimerkki tarkistussumman laskemiseksi Modulo 43:n mukaan

Excel VBA -koodi tarkistussumman laskemiseksi Modulo 43:n mukaan, esim. HIBC-koodille:
' 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 laskee automaattisesti tarkistusnumerot viivakoodeille.
Näitä tarkistuslukuja ei tarvitse laskea tai lisätä manuaalisesti. Tämä dokumentaatio on liitetty mukaan vain täydellisyyden vuoksi.
Modulo-menetelmän mukainen tarkistussumman laskeminen 47:
Modulo 47:n mukainen tarkistusmerkki käytetään esimerkiksi Code 93:ssa.

Koodi 93 käyttää kahta tarkistussummaa, ns. C- tarkistussummaa ja ns. K- tarkistussummaa. Molemmat lasketaan saman periaatteen mukaisesti. K -tarkistussumma sisältää kuitenkin myös C -tarkistussumman.

Laskelman aikana kaikille koodin merkeille annetaan ensin viitenumerot. Jokaiselle koodin numerolle on annettu painotus, joka kasvaa takaa päin. Näin ollen viimeisellä sijalla on painoarvo 1, toiseksi viimeisellä sijalla painoarvo 2 ja niin edelleen. Viitenumerot kerrotaan kussakin tapauksessa painotuskertoimella. Tuloksena saadut yksittäiset tulokset lasketaan yhteen.

Tämä summa jaetaan nyt 47:llä. Tämän osan loppuosa vastaa tarkistussummaa, joka on koodattu merkiksi viitenumeron avulla.

K -tarkistussumma määritetään samalla tavalla. Tällä kertaa kuitenkin käytetään perustana koodin merkkijonoa – kuten ensimmäisessä tarkistussummassa – sekä C-tarkist ussummaa. Ensimmäinen määritetty tarkistussumma sisältyy toisen tarkistussumman laskentaan.

Laskelmaesimerkki:

Checksum with Modulo47

Viitenumerot 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