Our 3D CAD supplier models have been moved to 3Dfindit.com, the new visual search engine for 3D CAD, CAE & BIM models.
You can log in there with your existing account of this site.
The content remains free of charge.
European Article Number (EAN) o International Article Number (IAN) 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:
Por ejemplo, para 123456789041 el dígito de control será:
El código quedará así: 1234567890418.
# 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álculo del dígito de control EAN
function ean13_checksum ($message) {
$checksum = 0;
foreach (str_split(strrev($message)) as $pos => $val) {
$checksum += $val * (3 - 2 * ($pos % 2));
}
return ((10 - ($checksum % 10)) % 10);
}
// Valor de prueba (sin dígito de control)
$ean = '931804231236';
echo 'Digito de control: ', ean13_checksum($ean);
// Cálculo del dígito de control EAN
int iSum = 0;
int iSumInpar = 0;
int iDigit = 0;
string EAN = "123456789041"; // 12 digitos unicamente
EAN=EAN.PadLeft(13,'0');
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());
EAN = "123456789041"
def eanCheck(ean):
checksum = 0
for i, digit in enumerate(reversed(ean)):
checksum += int(digit) * 3 if (i % 2 == 0) else int(digit)
return (10 - (checksum % 10)) % 10
print "Digito de control: %d" %eanCheck(EAN)
'Cálculo del dígito de control EAN
Dim iSum As Integer
Dim iDigit As Integer
Dim EAN As String
Dim i As Integer
iSum = 0
iDigit = 0
EAN = Text1.Text 'EAN de prueba
For i = Len(EAN) To 1 Step -1
iDigit = (Mid(EAN, i, 1))
If (Len(EAN) - i + 1) Mod 2 <> 0 Then
iSum = iSum + iDigit * 3
Else
iSum = iSum + iDigit
End If
Next
Dim iCheckSum As Integer
iCheckSum = (10 - (iSum Mod 10)) Mod 10
Text2.Text = iCheckSum
Text3.Text = Text1.Text & Text2.Text & "0000000000000"
// Cálculo del dígito de control EAN
function ean13_checksum(message) {
var checksum = 0;
message = message.split('').reverse();
for(var pos in message){
checksum += message[pos] * (3 - 2 * (pos % 2));
}
return ((10 - (checksum % 10 )) % 10);
}
// Valor de prueba (sin dígito de control)
var ean = '123456789041';
console.log(ean13_checksum(ean));
CALL FUNCTION 'MARA_EAN11'
EXPORTING
P_MATNR = MARA-MATNR
P_NUMTP = MARA-NUMTP
P_EAN11 = MARA-EAN11
P_MEINH = MARA-MEINS
RET_EAN11 = LMARA-EAN11
RET_NUMTP = LMARA-NUMTP
BINPT_IN = SY-BINPT
P_MESSAGE = ' '
ERROR_FLAG = EAN_FEHLERFLG
P_HERKUNFT = 'A' " Für Abmessungen / EAN
GDS_RELEVANT = MARA-GDS_RELEVANT
IMPORTING
P_NUMTP = MARA-NUMTP
P_EAN11 = MARA-EAN11
VB_FLAG_MEAN = RMMG2-VB_MEAN
MSGID = MSGID " s. weiter unten
MSGTY = MSGTY
MSGNO = MSGNO
MSGV1 = MSGV1
MSGV2 = MSGV2
MSGV3 = MSGV3
MSGV4 = MSGV4
TABLES
MARM_EAN = MARM_EAN
MEAN_ME_TAB = MEAN_ME_TAB " NEU: AHE 24.10.95
ME_TAB = ME_TAB
YDMEAN = YDMEAN
EXCEPTIONS
EAN_ERROR = 1
OTHERS = 2....
// Cálculo del dígito de control EAN
function cc_CalcDV_Ean(Ean: String): Integer;
{ Calcula y devuelve el dígito verificador de una cadena de código EAN13 o EAN8
Devcuelve -1 en caso de ser incorrecto. }
var
SP, SI, I, L:Integer;
Impar: Boolean;
begin
L:= Length(Ean);
if (L=8) or (L=13) then
begin
SI:= 0;
SP:= 0;
I:= L-1;
Impar:= Odd(L);
repeat // Bucle para sumar los valores discriminando posiciones pares e impares
if Impar then SI:= SI + StrToInt(Ean[I]) else SP:= SP + StrToInt(Ean[I]);
Impar:= not Impar;
I:= I - 1;
until I =0;
if Impar then SI:= SI*3 else SP:= SP*3; // Multiplica por tres según la longitud del código
Result:= 10-(SI+SP) mod 10; // Calcula el dígito de verificación
end else Result:= -1;
end;
/**
* Cálculo del código de control
*/
private int controlCodeCalculator(String firstTwelveDigits)
{
char[] charDigits = firstTwelveDigits.toCharArray();
int[] ean13 =
{
1, 3
};
int sum = 0;
for(int i = 0; i < charDigits.length; i++)
{
sum += Character.getNumericValue(charDigits[i]) * ean13[i % 2];
}
int checksum = 10 - sum % 10;
if(checksum == 10)
checksum = 0;
return checksum;
}
DECLARE @initialBarcode VARCHAR(13), @auxBarcode VARCHAR(13), @finalBarcode VARCHAR(13)
SET @auxBarcode = REVERSE(@initialBarcode)
DECLARE @verifierCode INT = 0
SELECT
@verifierCode = CASE
WHEN i % 2 = 0 THEN
@verifierCode + SUBSTRING(@auxBarcode, i, 1)
ELSE
@verifierCode + (SUBSTRING(@auxBarcode, i, 1) * 3)
END
FROM dbo.NumbersTable(1,12,1)
SET @verifierCode = RIGHT((10 - RIGHT(@verifierCode,1)),1)
SET @finalBarcode = CONCAT(@initialBarcode, @verifierCode)
RETURN @finalBarcode
This article uses material from the Wikipedia article "European Article Number", which is released under the Creative Commons Attribution-Share-Alike License 3.0. There is a list of all authors in Wikipedia
eclass, ecl@ss, cobie,cibse, unspsc, ominclass, uniclass, taric number