教你如何看條形碼2009-01-03 14:17今天,盯著飲料瓶發(fā)呆,底部的條形碼吸引了我的注意。這些黑線到底代表什么意思呢?怎么樣編碼的?對于上面的兩個問題我還是懷有很大的興趣的。
上網(wǎng)google,中文的內(nèi)容很令我失望,都是千篇一律的介紹條形碼有什么好處的,到處充斥著轉(zhuǎn)載內(nèi)容,我需要的是怎樣編碼的信息,不是我要賣大米是否要申請個商品條形碼??戳宋液軣?,還是用英文好了。在google中輸入How to read UPC (Universal Product Code)。第一個結(jié)果就很有價值,標題為How to Read 12 Digit UPC Barcodes里面有UPC的編碼細節(jié),雖然內(nèi)容不多,但是都是點到要害的! 1、Note that barcodes are made up of both black and white lines. The white spaces in between the black lines are part of the code. 1、首先,要注意的是條形碼是由黑線和白線組成的。兩條黑線間滴白線也是編碼的一部分。
2、Understand that there are four different thicknesses to the lines. Henceforth, the skinniest line will be referred to as "1," the medium-sized line as "2," the next largest line as "3." and the thickest is "4." 2、要了解線有4種不同的寬度。開頭遇到的最細的線將被看做“1”,比最細的大一倍的自然就是“2”了,再大點是“3”了,最寬就是“4”了。
3、Each UPC barcode begins and ends with 101 (thin black, thin white, thin black). In the very middle of the barcode, you will notice two thin black lines sticking down between the numbers. The thin white between them, as well as the thin whites to either side, make up a 01010. Each UPC barcode has 01010 in the middle. 3、每個UPC條形碼以101(細黑,細白,細黑)開始并以它結(jié)束。在條形碼的中間,你會注意到兩條細黑線比旁邊的線長,分開了數(shù)字。兩邊的白細線和這兩黑細線構(gòu)成了01010。每個UPC編碼都有01010在中間。(注:為了防止掃描時出錯)
4、Recognize that each digit, including the small numbers that begin and end the barcode, has its own unique four-line set. 0 = 3211, 1 = 2221, 2 = 2122, 3 = 1411, 4 = 1132, 5 = 1231, 6 = 1114, 7 = 1312, 8 = 1213, 9 = 3112. (Note that the sum of bar widths numbers is 7 for all codes because each code is 7 units wide.) 4、由上圖可以注意到每個數(shù)字,(這個應該怎翻??)包括開始標志和結(jié)束標志都有它們獨有的4線的編碼。0=3211,1=2221,2=2122,3=1411,4=1132,5=1231,6=1114,7=1312,8=1213,9=3112。(請注意編碼加起來和為7,因為每個編碼都是7個最小單位的寬度)
5、So, the barcode above whose first two digits are 03 would start out "11132111411". Broken down this is "111-3211-1411" Where 111 marks the beginning of the bar code and 3211 marks the digit 0 . 5、因此,上面的條形碼頭兩個數(shù)字將由這樣開始“11132111411”。用橫線分隔開就是“111-3211-1411”,其中111標志條形碼的開始3211表示數(shù)字0。(這里我感覺有錯,應該是101開始而不是111開始吧?)
突然醒起!我看過一書《編碼的奧秘》里面有介紹UPC的,我咋就忘了呢!相關(guān)內(nèi)容在第9章,里面還介紹了膠卷盒里面的一種表示膠卷參數(shù)的編碼。有興趣可以去下電子書看,網(wǎng)上很流行,肯定能找到。在此書中了解到了更多的內(nèi)容:UPC編碼被中線01010隔開的兩邊數(shù)字編碼方式是不一樣的,區(qū)別就是把另一邊取反。 左邊的編碼 0001101=0 0110001=5 0011001=1 0101111=6 0010011=2 0111011=7 0111101=3 0110111=8 0100011=4 0001011=9 注意,每個7位代碼都是以0開頭,以1結(jié)尾的。如果掃描儀遇到了第一個比特位值為 1或最后一個比特位值為0的情況,它就知道自己沒有將UPC正確地讀入或者是條形碼被竄改了。另外我們還注意到每個代碼都僅有兩組連續(xù)的值為1的比特位,這就意味著每個數(shù)字對應著條形碼中的兩個豎條。上表中的每個代碼中都包含有奇數(shù)個值為1的比特位,這也是用于檢測差錯和數(shù)據(jù)一致性的一種機制,稱為奇偶校驗。如果一組比特位中含有奇數(shù)個1,就稱之為奇校驗;如果含有偶數(shù)個1,就稱之為偶校驗。這樣看來,所有這些代碼都擁有奇校驗。為了給UPC右邊的7位一組的數(shù)字解碼,可以采用下面的表格:
右邊的編碼 1110010=0 1001110=5 1100110=1 1010000=6 1101100=2 1000100=7 1000010=3 1001000=8 1011100=4 1110100=9
書中介紹了更多的相關(guān)內(nèi)容,但是我拿起我的飲料瓶,滿懷信心的對照表來解碼時,發(fā)現(xiàn)解不了碼。繼續(xù)搜索,發(fā)現(xiàn)原來還有個歐共體搞出來的EAN碼!繼續(xù)吧?偉大的google啊,請告訴我How To Read EAN。結(jié)果不大理想,找了半天,發(fā)現(xiàn)篇論文里面有點東西http://www.acm.org/src/subpages/gf_entries_06/JeffreyAdair_src_gf06.pdf
發(fā)現(xiàn)了里面有EAN-13的編碼表,拿來和我喝的樂百氏瓶子上的條形碼一對,基本對得上號了,位數(shù)也是13位的,前面一個6沒有被編碼,代表的是商品的類別。也只是基本上而已,有幾個數(shù)字還是跟上圖介紹的不一樣!天,難道還有其他編碼,我手里拿的不是EAN-13編碼的?!汗~~~~