EAN-13 (European Article Number) é um código de barras no padrão EAN definido pela GS1, adaptado em mais de cem organizações membros GS1, para a identificação dos código de barras UPC.
No EAN-13 o símbolo codifica treze números que estão divididos em quatro partes. Dos treze dígitos, doze são dos dados referentes ao produto e um é o dígito verificador.
A GS1 possui uma calculadora em seu site disponível em https://www.gs1.org/services/check-digit-calculator.
A ideia é demonstrar como calcular o dígito verificador utilizando C#. Vamos ao código:
public static int Ean13CalculateCheckDigit(string barcode) { int[] array = new int[] { int.Parse(barcode[0].ToString()), int.Parse(barcode[1].ToString()) * 3, int.Parse(barcode[2].ToString()), int.Parse(barcode[3].ToString()) * 3, int.Parse(barcode[4].ToString()), int.Parse(barcode[5].ToString()) * 3, int.Parse(barcode[6].ToString()), int.Parse(barcode[7].ToString()) * 3, int.Parse(barcode[8].ToString()), int.Parse(barcode[9].ToString())* 3, int.Parse(barcode[10].ToString()), int.Parse(barcode[11].ToString()) * 3 }; int sum = (array[0] + array[1] + array[2] + array[3] + array[4] + array[5] + array[6] + array[7] + array[8] + array[9] + array[10] + array[11]); int checkDigit = (((sum / 10) + 1) * 10) - sum; if (checkDigit % 10 == 0) checkDigit = 0; return checkDigit; }
Os passos são simples:
- Multiplicam-se os dígitos do código de 12 dígitos por 1 e por 3, em sequência repetitiva de 1 e 3;
- Somando o resultado das multiplicações encontra-se o total;
- O valor total da soma das multiplicações deve ser dividido por 10;
- Transforme o resultado em inteiro, “arredondando” o número para baixo;
- Some 1 ao resultado da divisão;
- Multiplique o resultado dessa soma por 10;
- Subtraia desse resultado o valor da soma inicial das multiplicações;
- Se o resultado for um múltiplo de 10, o dígito verificador será 0.
No Wikipedia você pode entender mais sobre o EAN-13.