128码对应表及验证规则

 CODE 128 国家标准
1. code 128码格式:
  从左起: 空白区域,起始字符,数据区域,校验码,结束字符,空白区域。
  所有字符条纹图像都是以黑色开始,白色结束,只有结束字符例外。
 
2. 起始字符:
由于128码有三个字符集。所以有三个起始字符。
Start A : 表示后面的码值代码是从字符集A中值。  全部大写字母和标点符号和特殊符号。
        用六个黑白粗细不一表示为:{2,1,1,4,1,2}        
Start B: 表示字符集B,全部大小写字符和标点符号。数据为:{2,1,1,2,1,4}
Start C: 表示字符集C,数字00-99. 数据为:{2,1,1,2,3,2}
 
3. 数据字符的表示
在128码中所有数据都是有1-4的六位数组表示,总共绘制成11条黑白条纹。
 
校验码算法:
校验码=(起始字符值 +第一位数据值*1 +第二位数据值*2+ …. + 第 n 位数据*n )%103;
 
4. 结束字符:
128码结束字符只有一个在编码表中以Stop 来表示,数据为:{2,3,3,1,1,1,2};

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
图形方式输出Code128C条形码

最近的项目牵涉到一维条码打印的问题。条码的选型上倒没什么,因为要求短且仅包含数字,所以决定选用Code128C。在国外的网站上找了点资料研究了下,终于大致搞懂了Code128C的原理和实现方法。

Code128C只能编码长度是偶数的数字串,这是它的前提之一。说起来编码规则很简单,00 - 99 这100个数字每个数字都预先规定好一个条码,然后把原始的待编码字符串两位两位的读取,每个两位都从上面提到的码表中找到对应的条码,追加。

举个例子,我们要打印12345678的Code128c条码。首先打印Code128c的条码头,bbsbssbbbss。(b代表1个单位宽度的竖线,s代表1个单位宽度的空白)

然后对12345678编码。我们把它看成 12 34 56 78。12对应的条码是bsbbssbbbss,34对应的条码是bsssbsbbsss,56对应的条码是bbbsssbsbbs,78对应的条码是bbssssbsbss。按次序堆积起来就是了。

现在应该很好理解为什么C型128码可以打印的比较短,就是因为输出的信息被压缩到原来的一半。

接下来就是一个自校验码。计算方法是:(105 + (1 * 12 + 2 * 34 + 3 * 56 + 4 *78)) % 103 = 47。再追加47对应的条码bsssbbbsbbs。

这里有个注意点是,第n组数字要乘以n。比如,12是第一组所以乘1,而34是第二组所以乘2。

最后就是终结符,固定为bbsssbbbsbsbb,也追加。

如此得出一个可以代表条形码的字符串:
bbsbssbbbss bsbbssbbbss bsssbsbbsss bbbsssbsbbs bbssssbsbss bsssbbbsbbs bbsssbbbsbsbb (实际上没空格)

也就是 StartC 12 34 56 78 47 Stop (实际上没空格)


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
128码有A/B/C三种方式

         A  B  C    A B C
00  SP  SP   00  11011001100   
01  !  !   01  11001101100   
02  "  "   02  11001100110   
03  #  #   03  10010011000   
04  $  $   04  10010001100   
05  %  %   05  10001001100   
06  &  &   06  10011001000   
07  /'  /'   07  10011000100   
08  (  (   08  10001100100   
09  )  )   09  11001001000   
10  *  *   10  11001000100   
11  +  +   11  11000100100   
12  ,  ,   12  10110011100   
13  -  -   13  10011011100   
14  .  .   14  10011001110   
15  /  /   15  10111001100   
16  0  0   16  10011101100   
17  1 1   17  10011100110   
18  2 2   18  11001110010   
19  3  3   19  11001011100   
20  4  4   20  11001001110   
21  5 5   21  11011100100   
22  6 6   22  11001110100   
23  7  7   23  11101101110   
24  8 8   24  11101001100   
25  9  9   25  11100101100   
26  :  :   26  11100100110   
27  ;  ;   27  11101100100   
28  <  <   28  11100110100   
29  =  =   29  11100110010   
30  >  >   30  11011011000   
31  ?  ?   31  11011000110   
32  @  @   32  11000110110   
33  A  A   33  10100011000   
34  B  B   34  10001011000   
35  C  C   35  10001000110   
36  D  D   36  10110001000   
37  E  E   37  10001101000   
38  F  F   38  10001100010   
39  G  G   39  11010001000   
40  H  H   40  11000101000   
41  I  I   41  11000100010   
42  J  J   42  10110111000   
43  K  K   43  10110001110   
44  L  L   44  10001101110   
45  M  M   45  10111011000   
46  N  N   46  10111000110   
47  O  O   47  10001110110   
48  P  P   48  11101110110   
49  Q  Q   49  11010001110   
50  R  R   50  11000101110   
51  S  S   51  11011101000   
52  T  T   52  11011100010    
53  U  U   53  11011101110
54  V  V   54  11101011000
55  W  W   55  11101000110
56  X  X   56  11100010110
57  Y  Y   57  11101101000
58  Z  Z   58  11101100010
59  [  [   59  11100011010
60  //  //   60  11101111010
61  ]  ]   61  11001000010
62  ^  ^   62  11110001010
63  _  _   63  10100110000
64  NUL  `   64  10100001100
65  SOH  a   65  10010110000
66  STX  b   66  10010000110
67  ETX  c   67  10000101100
68  EOT  d   68  10000100110
69  ENQ  e   69  10110010000
70  ACK  f   70  10110000100
71  BEL  g   71  10011010000
72  BS  h   72  10011000010
73  HT  I   73  10000110100
74  LF  j   74  10000110010
75  VT  k   75  11000010010
76  FF  l   76  11001010000
76  FF  l   76  11001010000
77  CR  m   77  11110111010
78  SO  n   78  11000010100
79  SI  o   79  10001111010
80  DLE  p   80  10100111100
81  DC1  q   81  10010111100
82  DC2  r   82  10010011110
83  DC3  s   83  10111100100
84  DC4  t   84  10011110100
85  NAK  u   85  10011110010
86  SYN  v   86  11110100100
87  ETB  w   87  11110010100
88  CAN  x   88  11110010010
89  EM  y   89  11011011110
90  SUB  z   90  11011110110
91  ESC  {   91  11110110110
92  FS  |   92  10101111000
93  GS  }   93  10100011110
94  RS  ~   94  10001011110
95  US  DEL   95  10111101000
96  FNC3  FNC3   96  10111100010
97  FNC2  FNC2   97  11110101000
98  SHIFT  SHIFT   98  11110100010
99  CodeC  CodeC   99  10111011110
100  CodeB  FNC4   CodeB  10111101110
101  FNC4  CodeA   CodeA  11101011110
102  FNC1  FNC1   FNC1  11110101110
103  STARTA  STARTA   STARTA  11010000100
104  STARTB  STARTB   STARTB  11010010000
105  STARTC  STARTC   STARTC  11010011100
终止符 STOP  STOP   STOP  1100011101011

你可能感兴趣的:(c,算法,图形,Codec)