This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revision | |||
en:sedamo:api:sedamo_checksum_test [2022/03/26 15:24] – ↷ Page moved from i:sedamo:api:sedamo_checksum_test to en:sedamo:api:sedamo_checksum_test admin | en:sedamo:api:sedamo_checksum_test [2022/03/26 15:25] (current) – admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Verifying a sedamo Address Code ====== | ||
+ | The first digit of the //sedamo// address code is a check digit which allows to verify the code __without__ an API call. | ||
+ | |||
+ | The check digit is the modulo (the rest of an integer division) by 20, where | ||
+ | A=0, B=1, C=2, D=3, E=4, F=5, G=6, H=7, J=8, K=9, L=10, M=11, P=12, Q=13, R=14, T=15, U=16, W=17, X=18, Y=19. | ||
+ | Please note that the letters I, N, O, S, V, and Z are not used in a //sedamo// address code. | ||
+ | Each digit must be multiplied by its position, starting with 0. | ||
+ | |||
+ | |||
+ | == Examples == | ||
+ | |||
+ | AB-CD-EF-GH | ||
+ | |||
+ | 1st digit: *0, 2nd digit: *1 and so on: | ||
+ | |||
+ | A*0 + B*1 + C*2 + D*3 + E*4 + F*5 + G*6 + H*7 | ||
+ | |||
+ | A=0, B=1 etc. So: | ||
+ | |||
+ | 0*0 + 1*1 + 2*2 + 3*3 + 4*4 + 5*5 + 6*6 + 7*7 | ||
+ | = 140 | ||
+ | 140 : 20 = 7, rest 0 | ||
+ | 0 = A | ||
+ | |||
+ | " | ||
+ | |||
+ | |||
+ | FC-KN-AZ-IS | ||
+ | |||
+ | This code is obviously wrong, a //sedamo// address code cannot contain the letters " | ||
+ | |||
+ | |||
+ | |||
+ | CT-QP-DE-TP | ||
+ | | ||
+ | C*0 + T*1 + Q*2 + P*3 + D*4 + E*5 + T*6 + P*7 | ||
+ | = 2*0 + 15*1 + 13*2 + 12*3 + 3*4 + 4*5 + 15*6 + 12*7 | ||
+ | = 283 | ||
+ | 283 : 20 = 14, rest 3 | ||
+ | 3 = D | ||
+ | D ≠ C | ||
+ | | ||
+ | Check digit and calculated check sum do not match, this code is incorrect. | ||
+ | (A letter error occurred during the input, D and E were interchanged. The correct code would be | ||
+ | '' | ||
+ | |||
+ | |||
+ | == PHP function == | ||
+ | Here is a PHP function to check the correctness of a //sedamo// address code. (Please remove hyphens, dots, spaces etc. from the address code before testing!) | ||
+ | |||
+ | <file php sedamo_code_verification.php> | ||
+ | function is_sedamo($sedamo) | ||
+ | { // verifies the check digit of the sedamo address code | ||
+ | $letters = array(" | ||
+ | |||
+ | if (strlen($sedamo) != 8) { return(false); | ||
+ | else { | ||
+ | for($i=1, $sum=0; $i<8; $i++) | ||
+ | { | ||
+ | $sum = $sum + $i * $letters[($sedamo[($i)])]; | ||
+ | } // for | ||
+ | return (fmod($sum, 20) == $letters[($sedamo[0])]); | ||
+ | } // if-else | ||
+ | } // is_sedamo | ||
+ | </ | ||
+ | |||
+ | [[en: |