- European Article Number
-
European Article Number
European Article Number es un sistema de códigos de barras adoptado por más de 100 países y cerca de un millón de empresas (2003). En el año 2005, la asociación EAN se ha fusionado con la UCC (Uniform Code Council) para formar una nueva y única organización mundial identificada como GS1, con sede en Bélgica.
El código EAN más usual es EAN13, constituido por 13 dígitos y con una estructura dividida en cuatro partes:
- Los primeros dígitos del código de barras EAN identifican el país que otorgó el código, no el país de origen del producto. Por ejemplo, en Bolivia se encarga de ello una empresa responsable adscrita al sistema EAN y su código es el '777'.
- Referencia del ítem, compuesto de:
- Código de empresa. Es un número compuesto por entre 5 y 8 dígitos, que identifica al propietario de la marca.
- Código de producto. Completa los 12 primeros dígitos.
- Dígito de control. Para comprobar el dígito de control (por ejemplo, inmediatamente después de leer un código de barras mediante un escáner), numeramos los dígitos de derecha a izquierda. A continuación se suman los dígitos de las posiciones impares, el resultado se multiplica por 3, y se le suman los dígitos de las posiciones pares. Se busca decena inmediatamente superior y se le resta el resultado obtenido. El resultado final es el dígito de control. Si el resultado es múltiplo de 10 el dígito de control será 0.
- Por ejemplo, para 123456789041 el dígito de control será:
- Numeramos de derecha a izquierda: 140987654321
- Suma de los números en los lugares impares: 1+0+8+6+4+2 = 21
- Multiplicado × 3: 21 × 3 = 63
- Suma de los números en los lugares pares: 4+9+7+5+3+1 = 29
- Suma total: 63 + 29 = 92
- Decena inmediatamente superior = 100
- Dígito de control: 100 - 92 = 8
- El código quedará así: 1234567890418.
Contenido
Implementación
Perl
# Cálculo del dígito de control EAN my $ean = '123456789041'; # Valor de prueba my $checksum = 1000; my $i = 0; for my $digit (split //, reverse $ean) { # Recorremos el $ean de forma inversa, dígito por dígito $checksum # Modificamos $checksum -= $i++ % 2 # según la posición del dígito: ? $digit # posición impar : $digit*3 # posición par ; } $checksum %= 10; # Ajustamos a la decena inmediatamente inferior print "Dígito de control: $checksum\n"; print "Código EAN: $ean$checksum\n";
C#
// Cálculo del dígito de control EAN int iSum = 0; int iSumInpar = 0; int iDigit = 0; string EAN = "123456789041"; for (int i = EAN.Length; i >= 1; i--) { iDigit = Convert.ToInt32(EAN.Substring(i - 1, 1)); if (i % 2 == 0) { iSumInpar += iDigit; } else { iSum += iDigit; } } iDigit = (iSumInPar * 3) + iSum; int iCheckSum = (10 - (iDigit % 10)) % 10; Console.Write("Digito de control: " + iCheckSum.ToString());
Python
iSum = 0 EAN = "123456789041" for i in range(len(EAN)-1,0,-1): if i%2==0: iSum += int(EAN[i]) else: iSum += int(EAN[i])*3 iCheckSum = (10 - (iSum % 10)) % 10 print "Digito de control: %d" %iCheckSum
Visual Basic
'Cálculo del dígito de control EAN Dim iSum As Integer = 0 Dim iDigit As Integer = 0 Dim EAN As String = "123456789041" 'EAN de prueba For i As Integer = EAN.Length To 1 Step -1 iDigit = Convert.ToInt32(EAN.Substring(i - 1, 1)) If (i+1) Mod 2 = 0 Then iSum += iDigit Else iSum += iDigit * 3 End If Next Dim iCheckSum As Integer = (10 - (iSum Mod 10)) Mod 10 Console.Write("Dígito de control: " & iCheckSum.ToString())
Véase también
- Código de barras
- Symbol
- Tienda de autoservicio
- GS1-128 antes Ean-128
Enlaces externos
- EAN International, ahora GS1 International
- Prefijos EAN por país
- GS1 Argentina
- Asociación Española de Codificación Comercial (GS1 España)
- GS1 Guatemala
- GS1 Venezuela
- ¿Cómo es el ean 128?
- EAN-Search.org
Implementaciones
- Generador de código de barras EAN (Inglés)
- Generador de EAN-13 y DataBar-14 en línea (Inglés)
- Programa gratis para calcular dígito de control EAN13, EAN8, UPC y otros
- GNU Barcode, software libre para generar códigos de barras en diversos formatos (Inglés)
- Barcode Módulos Perl en CPAN para la generación de códigos de barras (en inglés)
Categorías: Identificadores internacionales | Códigos de barras
Wikimedia foundation. 2010.