| #10 |
 |
jurena |
24 ago 09 |
0 personas consideran útil este post.
|
Sobre el segundo punto: imagino que hablas de código de barras EAN13
Esto es de Wikipedia:
• 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á:
o Numeramos de derecha a izquierda: 140987654321
o Suma de los números en los lugares impares: 1+0+8+6+4+2 = 21
o Multiplicado × 3: 21 × 3 = 63
o Suma de los números en los lugares pares: 4+9+7+5+3+1 = 29
o Suma total: 63 + 29 = 92
o Decena inmediatamente superior = 100
o Dígito de control: 100 - 92 = 8
• El código quedará así: 1234567890418.
Ej. sacado de un texto de forosdelweb:
Tomamos por ejemplo el codigo de mi chocolate para beber favorito 750105922532-9 <- el 9 es el numero que se debe obtener.
1.- Paso tomamos la cadena 750105922532 y la invertimos (235229501057).
2.- Sumo los numeros en los lugares impares de la cadena 2+5+2+5+1+5=20 y el resultado lo multiplico por 3, 20 *3 = 60.
3.- Sumo los numeros en los lugares PARES de la cadena 3+2+9+0+0+7=21.
4.- Sumo el resultado del paso 2 y el paso 3 y me da 81, ahora calculo la decena inmediata superior, en este caso es 90 y a esto le resto 81, 90-81=9;
Y asi obtengo el digito verificador 9. Un poco liado pero segun se ese es el protocolo, xd.
Función que puede servir para generarlo o comprobarlo (en este último caso adaptada, claro está):
<?php
//función creada por f0n para generar ese dígito verificador
function ean($cadena)//función para generar el control de verificación de un código de barras EAN13 (son 12 dígitos y el de control separado por un guión)
{
$cadena = strrev($cadena);//se presentan los 12 números de manera inversa
$i = 0;
while($i < strlen($cadena))
{
if($i%2 == 0) $impares += $cadena[$i];//se suman los impares
else $pares += $cadena[$i];//se suman los pares
$i++;
}
$suma = $pares + ($impares*3); //se realiza la suma de los pares con el resultado de multiplicar la suma de los impares por 3
return 10 -($suma%10);//se resta a 10 el resto de dividir esa suma por 10.
}
// Prueba
$numeros="123456789041";//12 dígitos de un código de barras EAN13.
echo $numeros.'<br />';
$control= ean($numeros); // devuelve el código de control
echo 'código de barras: '.$numeros.$control.'<br />';
?>