Kontrollsiffra beräkning

Beräkning av kontrollsiffror för streckkoder

Modulo 10

ActiveBarcode: Info ActiveBarcode beräknar automatiskt kontrollsiffror för streckkoder.
Det finns ingen anledning att beräkna eller lägga till dessa kontrollsiffror manuellt. Denna dokumentation ingår endast för fullständighetens skull.
Beräkning av en kontrollsumma enligt Modulo 10:
En kontrollsiffra enligt Modulo 10 används av EAN-koder, t.ex. EAN-13.

För EAN-koder beräknas kontrollsiffran enligt beräkningsmetoden modulo 10 med viktningen 3. Viktningen 3 börjar med den första siffran från höger. Sedan multipliceras de enskilda siffrorna med viktningen. Dessa resultat läggs till en summa. Modulo 10 beräknas utifrån denna summa. Först delas summan med 10. Resten av divisionen subtraheras från 10. Resultatet av denna subtraktion är kontrollsumman/kontrollsiffran.

Följande är ett beräkningsexempel för Modulo 10 med hjälp av en EAN-13-kod:

Siffror: 4 0 0 7 6 3 0 0 0 0 1 1
Vikt: 1 3 1 3 1 3 1 3 1 3 1 3
Resultat: 4+0+0+21+6+9+0+0+0+0+1+3 = 44
Beräkna kontrollsumma: Tillägget till nästa multiplum av 10. (50)
Kontrollsiffra 6


Med Code 25 -koderna beräknas kontrollsiffran också med viktning 3 enligt beräkningsmetoden Modulo 10. Viktningen 3 börjar dock vid den första användbara siffran från vänster. Sedan multipliceras de enskilda användbara siffrorna med viktningen. De resulterande resultaten läggs till en summa. Modulo 10 beräknas utifrån denna summa. Först delas summan med 10. Resten av divisionen subtraheras från 10 (beräkna skillnaden till 10). Resultatet av denna subtraktion är kontrollsumman/kontrollsiffran.

Nedan visas ett beräkningsexempel för Modulo 10 med kod 25:

Siffror: 1 2 3 4 5
Vikt: 3 1 3 1 3
Resultat: 3+2+9+4+15 = 33
Beräkna kontrollsumma: Tillägget till nästa multiplum av 10. (40)
Kontrollsiffra 7


Med Leitcode och Identcode beräknas kontrollsiffran också enligt beräkningsmetoden modulo 10. Viktningen är dock annorlunda här: Viktning på 4 för udda positioner och 9 för raka positioner. Här är ett exempel:

Siffror: 2 3 6 6 9 0 1 2 0 1 2 3 0
Vikt: 4 9 4 9 4 9 4 9 4 9 4 9 4
Resultat: 8+27+24+54+36+0+4+18+0+9+8+27+0 = 215
Beräkna kontrollsumma: Tillägget till nästa multiplum av 10. (220)
Kontrollsiffra 5


Ett beräkningsexempel för Modulo 10 med en EAN-14-/ITF-14-/SCC-14-/DUN-14-kod:

Siffror: 0 4 0 0 7 6 3 0 0 0 0 1 1
Vikt: 3 1 3 1 3 1 3 1 3 1 3 1 3
Resultat: 0+4+0+0+21+6+9+0+0+0+0+1+3 = 44
Beräkna kontrollsumma: Tillägget till nästa multiplum av 10. (50)
Kontrollsiffra 6

Modulo 11

ActiveBarcode: Info ActiveBarcode beräknar automatiskt kontrollsiffror för streckkoder.
Det finns ingen anledning att beräkna eller lägga till dessa kontrollsiffror manuellt. Denna dokumentation ingår endast för fullständighetens skull.
Beräkning av en kontrollsumma enligt Modulo 11:
En kontrollsiffra enligt Modulo 11 används t.ex. av PZN. Modulo 11 används också för ISBN.

PZN
Först multipliceras alla siffror individuellt med en multiplikator. Multiplikatorn motsvarar siffran 1:s position. Alla resulterande produkter läggs till. Resultatet delas sedan med 11. Den resulterande resten är kontrollsiffran. Om kontrollsiffran är 10 får detta nummer inte användas som PZN. Koden skulle därför vara ogiltig.

Ett beräknings exempel:

Siffror: 6 3 1 9 4 2
Vikt: 2 3 4 5 6 7
Resultat: 12+9+4+45+24+14 = 108
Beräkna kontrollsumma: 108 / 11 = 9 Återstod 9
Kontrollsiffra 9


ISBN-10 och ISSN-kontrollsumman
Först multipliceras alla siffror individuellt med en multiplikator. Multiplikatorn motsvarar positionen för siffran 1 från höger. Alla resulterande produkter läggs till. Resultatet delas sedan med 11. Den resulterande resten subtraheras från 11 och ger kontrollsiffran.
Om resultatet 11 beräknas för denna kontrollsumma, är kontrollsumman 0. Som resultat kunde 0 inte beräknas, eftersom 11 är omöjligt som resultat i föregående steg (resten efter division med 11).
Det kan också hända att siffran 10 krävs. 10 representeras av ett X: "3-928444-00-X".

Ett beräknings exempel:

Siffror: 3 9 2 8 4 4 4 0 4
Vikt: 10 9 8 7 6 5 4 3 2
Resultat: 30 + 81 + 16 + 56 + 24 + 20 + 16 + 0 + 8 = 251
Beräkna kontrollsumma: 251 / 11 = 22 Återstod 9 -> 11 - 9 = 2
Kontrollsiffra 2

Modulo 16

ActiveBarcode: Info ActiveBarcode beräknar automatiskt kontrollsiffror för streckkoder.
Det finns ingen anledning att beräkna eller lägga till dessa kontrollsiffror manuellt. Denna dokumentation ingår endast för fullständighetens skull.
Beräkning av en kontrollsumma enligt Modulo 16:
Modulo 16 används av streckkodssymboliken Codabar. Här är ett exempel på hur man beräknar kontrollsiffran enligt Modulo 16:

Siffror: A 7 8 9 A
Referensnummer: 16 7 8 9 16
Summan av referensnummer: 56
Beräkna kontrollsumma: 56 / 16 = 3 Återstod 8
difference: 16 - 8 = 8
Kontrollsiffra Referensnummer 8 = 8

Referensnummer:
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 beräknar automatiskt kontrollsiffror för streckkoder.
Det finns ingen anledning att beräkna eller lägga till dessa kontrollsiffror manuellt. Denna dokumentation ingår endast för fullständighetens skull.
Beräkning av en kontrollsumma enligt Modulo 43:
En kontrollsiffra enligt Modulo 43 används t.ex. av Code 39.

Först tilldelas referensnummer till alla tecken i koden. Dessa referensnummer läggs till en summa. Detta belopp delas med 43. Resten av denna del motsvarar kontrollsumman, som sedan ersätts av det tecken som motsvarar referensnumret.

Ett beräknings exempel:

Siffror: 1 5 9 A Z
Referensnummer: 1 +5 +9 +10 +35
Summan av referensnummer: 60
Beräkna kontrollsumma: 60 / 43 = 1 Återstod 17
Kontrollsiffra "H" (Referensnummer 17)

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


Kodexempel för beräkning av kontrollsumman enligt Modulo 43

Excel VBA-kod för beräkning av kontrollsumman enligt Modulo 43, t.ex. för HIBC-koden:
' 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 beräknar automatiskt kontrollsiffror för streckkoder.
Det finns ingen anledning att beräkna eller lägga till dessa kontrollsiffror manuellt. Denna dokumentation ingår endast för fullständighetens skull.
Beräkning av en kontrollsumma enligt Modulo 47:
Ett kontrolltecken enligt Modulo 47 används t.ex. av Code 93.

Kod 93 använder två kontrollsummor, den så kallade C -kontrollsumman och den så kallade K -kontrollsumman. Båda beräknas enligt samma princip. K -kontrollsumman innehåller dock även C -kontrollsumman.

Under beräkningen tilldelas först referensnummer till alla tecken i koden. Varje siffra i koden tilldelas en viktning och ökade stegvis bakifrån. Följaktligen har den sista positionen vikten 1, den näst sista positionen vikten 2 och så vidare. Referensnumren multipliceras i varje fall med viktningen. De individuella resultaten läggs samman.

Denna summa delas nu med 47. Resten av denna uppdelning motsvarar kontrollsumman, som kodas som ett tecken med hjälp av referensnumret.

K -kontrollsumman bestäms på samma sätt. Denna gång används dock teckensträngen i koden – precis som vid den första kontrollsumman – plus C- kontrollsumman som grund. Den första bestämda kontrollsumman ingår i beräkningen av den andra kontrollsumman.

Ett beräknings exempel:

Checksum with Modulo47

Referensnummer 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