Tagarchief: checksum

How to check an EAN13 barcode’s CRC

An EAN13 barcode has a built-in checksum to help cash registers discover damaged barcodes. You can easily check these checksums by hand.

Standard Digit positions
EAN-8 N1 N2 N3 N4 N5 N6 N7 N8
EAN-12 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12
EAN-13 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13
EAN-14 N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14
SSCC N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13 N14 N15 N16 N17 N18
Step 1: Multiply value of each position by
x3 x1 x3 x1 x3 x1 x3 x1 x3 x1 x3 x1 x3 x1 x3 x1 x3
Step 2: Add results together to create sum
Step 3: Subtract the sum from nearest equal or higher multiple of ten = Check Digit

The following table gives an example to illustrate how a Check Digit is calculated:

Pos N1 N2 N3 N4 N5 N6 N7 N8 N9 N10 N11 N12 N13
Number without Check Digit 1 2 3 4 5 6 7 8 9 1 2 3 -
Step 1: Multiply x x x x x x x x x x x x -
by 1 3 1 3 1 3 1 3 1 3 1 3 -
Step 2: Add results = = = = = = = = = = = = -
to create sum 1 6 3 12 5 18 7 24 9 3 2 9 = 91
Step 3: Subtract the sum from nearest equal or higher multiple of ten = 100-99 = 1
Number with Check Digit 1 2 3 4 5 6 7 8 9 1 2 3 1

My PHP code to check the CRC code:

function ean13_check_digit($digits){
   $digits=preg_split("//",$digits,-1,PREG_SPLIT_NO_EMPTY);
   $a=$b=0;
   for($i=0;$i<6;$i++){
      $a+=(int)array_shift($digits);
      $b+=(int)array_shift($digits);
   }
   $total=($a*1)+($b*3);
   $nextten=ceil($total/10)*10;
   return $nextten-$total==array_shift($digits);
}
 
 
echo ean13_check_digit('1234567891231')?"good":"wrong";
echo ean13_check_digit('1234567891232')?"good":"wrong";
echo ean13_check_digit('1234567891233')?"good":"wrong";
echo ean13_check_digit('1234567891234')?"good":"wrong";
echo ean13_check_digit('1234567891235')?"good":"wrong";
echo ean13_check_digit('1234567891236')?"good":"wrong";
echo ean13_check_digit('1234567891237')?"good":"wrong";
© GeekLabInfo How to check an EAN13 barcode's CRC is a post from GeekLab.info. You are free to copy materials from GeekLab.info, but you are required to link back to http://www.geeklab.info
1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 1,00 out of 5)
Loading...