Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- # -*- coding: latin-1 -*-
- """ Codificador EAN13 Antonio Villanueva Segura
- https://barcode-coder.com/en/ean-13-specification-102.html
- """
- import sys
- import math
- def checksum (numero):
- """ calcula el checksum, numero final para ean13"""
- odd,even=0,0
- for index in range(len(numero)-1,-1,-1):
- if int(index)%2:#es par
- odd+=int (numero[index])
- else:#es impar
- even+=int (numero[index])
- return (10-(odd*3+even)%10)%10
- def tabla(numero,tabla):
- """TABLA0 se utiliza con el primer numero , nos dara la codificacion
- para la primera tabla empleando ,TABLA2-3
- TABLA3 se utiliza en la ultima parte """
- clave={# TABLA0 TABLA 1 TABLA 2 TABLA3
- '0':('000000','0001101','0100111','1110010'),
- '1':('001011','0011001','0110011','1100110'),
- '2':('001101','0010011','0011011','1101100'),
- '3':('001110','0111101','0100001','1000010'),
- '4':('010011','0100011','0011101','1011100'),
- '5':('011001','0110001','0111001','1001110'),
- '6':('011100','0101111','0000101','1010000'),
- '7':('010101','0111011','0010001','1000100'),
- '8':('010110','0110111','0001001','1001000'),
- '9':('011010','0001011','0010111','1110100')
- }
- return clave.get(numero)[int(tabla)]
- def ean13(numero,space=''):
- """La primera parte se codifica segun la clave anterior
- Sumario de la secuencua EAN 13
- start : 101
- parte #1
- centro : 01010
- parte #2
- stop : 101
- """
- codigo="101"+space#START
- for n, i in zip(range(1,7), range(7)):#1era. PARTE1
- codigo +=tabla( str(numero[n]) , int(tabla( numero[0] , 0)[i]) +1 ) +space
- codigo+='01010'+space #PARTE INTERMEDIA
- for n, i in zip(range(7,len(numero)), range(7)):#2a. PARTE2
- codigo +=tabla( str(numero[n]) , 3 ) +space
- codigo+='101'+space#STOP
- return codigo
- #numero a codificar segun EAN13
- numero='210987654321'
- #genera el checksum
- numero+=str (checksum(numero))
- print ("el numero es "+numero)
- #genera EAN13 de este numero con checksum incluido
- print (ean13(numero,' '))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement