我们要试着将条形码形象地看成是细条和黑条、窄间隙和宽间隙的排列,事实上,这就是观察条形码的一种方式。在UPC中,黑色条纹有四种不同的宽度,宽条纹的宽度分别是最细条纹宽度的两倍、三倍或四倍。同样,宽间隔的宽度分别是最窄间隔宽度的两倍、三倍或四倍。
但是,另一种解读UPC的方式就是将它们看做一列比特位。记住整个条形码不是在收银台的扫描仪所“看到”的那样。扫描仪所读到的并不是下面一排的数字,因为这需要更精密的光学识别(OCR,Optical Character Recognition)技术。扫描仪只识别整个条形码的一条窄带,条形码做得很大是为了便于结算台的操作人员用扫描仪对准。扫描仪所看到的那一个UPC断面可以这样表示:
看起来与莫尔斯码很像,不是吗?
当计算机从左向右扫描这个信息时,它会首先给遇到的第一个黑条分配一个值为1的比特,给与这个黑条相邻的白色间隙分配一个值为0的比特。随后的条纹和间隙被读做一行中的一系列比特,每个系列的比特可以是1位、2位、3位或4位,而这个位数取决于条纹和空隙的宽度。本例中扫描仪所扫描到的条形码与比特位之间的关系可以简单的表示为:
因此,整个UPC只不过是一串95位二进制数。在本例中,这些比特可以做如下分组。
前3位通常都是101,这就是最左边的护线,它帮助计算机扫描仪定位。从护线中,扫描仪可以确定代表单个比特的条和间隙的宽度是多少。否则,所有包装上的UPC就都得采用指定的大小了。
最左边的护线之后是6组比特串,每串含有7个比特位。其中每一组都可以是数字0\~9的编码,后面我会做一个简短的说明。接下来是一个5比特位的中间护线,这是一个固定的模式(始终是01010),它是一个内置式的检错码。如果计算机扫描仪没有在应有的位置找到中间护线,它就无法破解UPC码。这条中间护线是用来预防条形码被篡改或被印错的一种方法。
9 二进制数
83