Ik heb een string: TEST93
Hiervoor moet een checksum digit worden uitgerekend. Dit gaat als volgt:
Elk karakter heeft een waarde die opgezocht kan worden in een array:
Elk karakter van de string krijgt dan een vermenigvuldigingsfactor. Deze begint bij het meest rechtse karakter bij 1 en loopt dan op tot 20. Vervolgens begint het weer bij 1.
Het karaktergetal wordt dan karakterwaarde x vermenigvuldigingsfactor. Dus:
Nu tel je alle karaktergetallen bij elkaar op: 174+70+112+87+18+3 = 464
Nu doe je 464 modules 47. De rest is het checksum digit
Nu moet dit geheel vertaald worden naar een PHP functie.
Dus string erin, checksum digit eruit.
Hetgene waar ik het meeste problemen mee heb is het koppelen van een vermenigvuldigingsfactor aan een letter.
Deze mag maximaal 20 zijn en moet dan weer bij 1 beginnen. Geen flauw idee
Kan iemand mijn dosis inspiratie aanvullen?
Hiervoor moet een checksum digit worden uitgerekend. Dit gaat als volgt:
Elk karakter heeft een waarde die opgezocht kan worden in een array:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| $EncTable = array ( /* 0 */ "0", /* 1 */ "1", /* 2 */ "2", /* 3 */ "3", /* 4 */ "4", /* 5 */ "5", /* 6 */ "6", /* 7 */ "7", /* 8 */ "8", /* 9 */ "9", /* A */ "10", /* B */ "11", /* C */ "12", /* D */ "13", /* E */ "14", /* F */ "15", /* G */ "16", /* H */ "17", /* I */ "18", /* J */ "19", /* K */ "20", /* L */ "21", /* M */ "22", /* N */ "23", /* O */ "24", /* P */ "25", /* Q */ "26", /* R */ "27", /* S */ "28", /* T */ "29", /* U */ "30", /* V */ "31", /* W */ "32", /* X */ "33", /* Y */ "34", /* Z */ "35", /* - */ "36", /* . */ "37", /* SP */ "38", /* $ */ "39", /* / */ "40", /* + */ "41", /* % */ "42", /* ($)*/ "43", /* (%)*/ "44", /* (/)*/ "45", /* (+)*/ "46", /* *SS*/ "47" ); |
Elk karakter van de string krijgt dan een vermenigvuldigingsfactor. Deze begint bij het meest rechtse karakter bij 1 en loopt dan op tot 20. Vervolgens begint het weer bij 1.
Het karaktergetal wordt dan karakterwaarde x vermenigvuldigingsfactor. Dus:
code:
1
2
3
4
5
6
7
| karakter: T | E | S | T | 9 | 3 ----------------------------|---|---|---|---|--- karakterwaarde: 29| 14| 28| 29| 9 | 3 ----------------------------|---|---|---|---|--- vermenigvuldigingsfactor: 6 | 5 | 4 | 3 | 2 | 1 ----------------------------|---|---|---|---|--- karaktergetal: 174| 70|112| 87| 18| 3 |
Nu tel je alle karaktergetallen bij elkaar op: 174+70+112+87+18+3 = 464
Nu doe je 464 modules 47. De rest is het checksum digit
Nu moet dit geheel vertaald worden naar een PHP functie.
Dus string erin, checksum digit eruit.
Hetgene waar ik het meeste problemen mee heb is het koppelen van een vermenigvuldigingsfactor aan een letter.
Deze mag maximaal 20 zijn en moet dan weer bij 1 beginnen. Geen flauw idee
code:
1
2
| v e r m e n i g v u l d i g i n g s f a c t o r 04 03 02 01 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 |
Kan iemand mijn dosis inspiratie aanvullen?