(本文章擷取於 Andy 的條碼世界)

UPC碼全名為Universal Product Code(統一商品條碼),普遍使用於
          美洲一帶,UPC碼算是EAN碼的前身,因此兩者有著類似的特性及編
          碼方式,只有0~9數字字元而已.

               UPC碼分成標準型UPC-A碼及簡易型UPC-E碼,我們以較容易記
          得的方式來做一比較 : UPC-A碼與EAN-13碼同為13個數字,UPC-E碼
          與EAN-8碼同為8個數字.雖然長度相同,但其意義卻不盡相同,以下分
          別介紹其編碼方式.

               首先說明UPC及EAN碼每一字元的編碼原則,如下圖所示.
                                            
                每一字元由
2條Space2條Bar所組合而成,而又細分成7等分,
         此能組合不同粗細比例的線條字元,這就是UPC及EAN碼字元編碼的
         基礎.如圖的上方組合成0101111,為A Type編碼方式的數字
"6",圖的下
         方組合成1010000,為C Type編碼方式的數字
"6",兩者雖同是"6",但編碼
         的型態卻不同,接下來介紹編碼型態的差異. 
      
 

             UPC三種編碼型態如下:    
 
   
                   
       
      
     
                 UPC-A條碼基本架構如下:
                       
            
左邊線:固定為101 
                    旗碼:佔2個字元,第一個字元固定為0,通常不列印出來,第二個字
                                  元代表商品種類.
                    廠商代碼:佔5個字元,須提出申請.
                    中線:固定為01010
                    商品代碼:佔5個字元,由廠商自行訂定.
                    檢查碼:佔1個字元.
                    右邊線:固定為101,與左邊線相同.
       
       
                     
UPC-A編碼方式 

                    中線左邊,即旗碼及廠商代碼,採用A Type編碼方式

                    例如圖一.

                    旗碼第二個字元"
0",即為A Type編碼0001101
                    廠商代碼第一個字元"
1",即為A Type編碼0011001
                    廠商代碼第二個字元"
2",即為A Type編碼0010011
                    廠商代碼第三個字元"
3",即為A Type編碼0111101
                    廠商代碼第四個字元"
4",即為A Type編碼0100011
                    廠商代碼第五個字元"
5",即為A Type編碼0110001

                    中線右邊,即商品代碼及檢查碼,採用C Type編碼方式

                    例如圖一.

                    商品代碼第一個字元"
6",即為C Type編碼1010000
                    商品代碼第二個字元"
7",即為C Type編碼1000100
                    商品代碼第一個字元"
8",即為C Type編碼1001000
                    商品代碼第一個字元"
9",即為C Type編碼1110100
                    商品代碼第一個字元"
0",即為C Type編碼1110010
                    檢查碼字元"
5",即為C Type編碼1001110
      

                     
UPC-A檢查碼計算方式
                    
                    例如有一UPC-A碼為:
001234567890C      C為檢查碼

                           0      0     1      2       3     4     5    6    7     8    9     0   
C
                         n13  n12  n11  n10  n9  n8  n7  n6  n5  n4  n3  n2  n1

                    步驟一. C1=(n2+n4+n6+n8+n10+n12)=0+8+6+4+2+0=20
                                       
                         步驟二. C2=20*3=60
                                       
                         步驟三. C3=(n3+n5+n7+n9+n11+n13)=0+9+7+5+3+1=25

                         步驟四. C4=60+25=85 ----> 於取個位數"5"

                         步驟五. C=10-5=
5    檢查碼即為"5".
     

                  
UPC-E碼
                 
                
由UPC-A碼轉換而來,如下表所示共有10種轉換公式,符合其中
                         一項方可做轉換.  

                             
                         例如有一UPC-A碼為 <
001200000345C> (取中間11碼)
                                 
轉換成UPC-E碼為 <0123450C> ,符合第一個條件
                                          <
XXYYY0> 
                                 
第一個字元固定為 0
                                 
12 ---> XX    345 ---> YYY
                                 
第七個字元為  0
                                 
第八個字元為 C ----> 即為檢查字元.


                          
UPC-E碼的基本架構 

                                                 
                               左邊線:固定為101

                               第一個前置碼固定為0

                               資料碼為
6碼,每一個字元由A Type 或B Type編碼方式來
                                       編碼.
                               以下為UPC-E資料碼與檢查碼關係之編碼方式一覽表
                                           
                                             固定碼                                     檢查碼  

  0 B B A A A   0
  0 B B A B A A   1
  0 B B A A B A   2
  0 B B A A A B   3
  0 B A B B A A   4
  0 B A A B B A   5
  0 B A A A B B   6
  0 B A B A B A   7
  0 B A B A A B   8
  0 B A A B A B   9

                                檢查碼:必須將UPC-E碼轉換成UPC-A碼,轉換方式如圖二
                                                      所示做反編碼然後再計算檢查碼.
                                           UPC-E碼與UPC-A碼的檢查碼兩者是相同的.
                                           例如:有一UPC-E碼為
0123450C
                                                   轉換成UPC-A碼為
001200000345C
                                                   
c1=(0+2+0+0+3+5)*3=30
                                                   c2=0+1+0+0+0+4=5
                                                   c1+c2=30+5=35  --------> 取個位數
5
                                               
檢查碼 C=10-5=5
                              
                               
右邊線:固定為010101