Code 128 规则解析
1.CODE 128 标准
1.1 code 128码格式:
格式:
从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域。
所有字符条纹图像都是以黑色开始,白色结束,只有结束字符例外。
1.2 起始字符:
由于128码有三个字符集。所以有三个起始字符。
|
Start A : 表示后面的码值代码是从字符集A中值—— 全部大写字母和标点符号和特殊符号。 Start B: 表示字符集B——全部大小写字符和标点符号。 Start B的值为:六个黑白粗细不一交替地表示为:{2,1,1,2,1,4} ; Start C: 表示字符集C——数字00-99. Start C的值为:六个黑白粗细不一交替地表示为:{2,1,1,2,3,2} |
1.3 数据字符的表示
在128码中所有数据都是形如:d1d2…di ,其中di在(1,4)之间,且1<=i<=6 ,且sum(di) =11。
即总共需要绘制成11条黑白相间的条纹。
校验码算法:
| 校验码=(起始字符值 +第一位数据值*1 +第二位数据值*2+ …. + 第 n 位数据*n )%103; |
1.4 结束字符:
128码结束字符只有一个在编码表中以Stop 来表示,数据为:{2,3,3,1,1,1,2};
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 (实际上没空格)
3. Code 128 Barcode Table
| Value | Code Set A |
Code Set B |
Code Set C |
Bar/Space Pattern B S B S B S |
|---|---|---|---|---|
| 0 | SP | SP | 00 | 2 1 2 2 2 2 |
| 1 | ! | ! | 01 | 2 2 2 1 2 2 |
| 2 | " | " | 02 | 2 2 2 2 2 1 |
| 3 | # | # | 03 | 1 2 1 2 2 3 |
| 4 | $ | $ | 04 | 1 2 1 3 2 2 |
| 5 | % | % | 05 | 1 3 1 2 2 2 |
| 6 | & | & | 06 | 1 2 2 2 1 3 |
| 7 | ' | ' | 07 | 1 2 2 3 1 2 |
| 8 | ( | ( | 08 | 1 3 2 2 1 2 |
| 9 | ) | ) | 09 | 2 2 1 2 1 3 |
| 10 | * | * | 10 | 2 2 1 3 1 2 |
| 11 | + | + | 11 | 2 3 1 2 1 2 |
| 12 | , | , | 12 | 1 1 2 2 3 2 |
| 13 | - | - | 13 | 1 2 2 1 3 2 |
| 14 | . | . | 14 | 1 2 2 2 3 1 |
| 15 | / | / | 15 | 1 1 3 2 2 2 |
| 16 | 0 | 0 | 16 | 1 2 3 1 2 2 |
| 17 | 1 | 1 | 17 | 1 2 3 2 2 1 |
| 18 | 2 | 2 | 18 | 2 2 3 2 1 1 |
| 19 | 3 | 3 | 19 | 2 2 1 1 3 2 |
| 20 | 4 | 4 | 20 | 2 2 1 2 3 1 |
| 21 | 5 | 5 | 21 | 2 1 3 2 1 2 |
| 22 | 6 | 6 | 22 | 2 2 3 1 1 2 |
| 23 | 7 | 7 | 23 | 3 1 2 1 3 1 |
| 24 | 8 | 8 | 24 | 3 1 1 2 2 2 |
| 25 | 9 | 9 | 25 | 3 2 1 1 2 2 |
| 26 | : | : | 26 | 3 2 1 2 2 1 |
| 27 | ; | ; | 27 | 3 1 2 2 1 2 |
| 28 | < | < | 28 | 3 2 2 1 1 2 |
| 29 | = | = | 29 | 3 2 2 2 1 1 |
| 30 | > | > | 30 | 2 1 2 1 2 3 |
| 31 | ? | ? | 31 | 2 1 2 3 2 1 |
| 32 | @ | @ | 32 | 2 3 2 1 2 1 |
| 33 | A | A | 33 | 1 1 1 3 2 3 |
| 34 | B | B | 34 | 1 3 1 1 2 3 |
| 35 | C | C | 35 | 1 3 1 3 2 1 |
| 36 | D | D | 36 | 1 1 2 3 1 3 |
| 37 | E | E | 37 | 1 3 2 1 1 3 |
| 38 | F | F | 38 | 1 3 2 3 1 1 |
| 39 | G | G | 39 | 2 1 1 3 1 3 |
| 40 | H | H | 40 | 2 3 1 1 1 3 |
| 41 | I | I | 41 | 2 3 1 3 1 1 |
| 42 | J | J | 42 | 1 1 2 1 3 3 |
| 43 | K | K | 43 | 1 1 2 3 3 1 |
| 44 | L | L | 44 | 1 3 2 1 3 1 |
| 45 | M | M | 45 | 1 1 3 1 2 3 |
| 46 | N | N | 46 | 1 1 3 3 2 1 |
| 47 | O | O | 47 | 1 3 3 1 2 1 |
| 48 | P | P | 48 | 3 1 3 1 2 1 |
| 49 | Q | Q | 49 | 2 1 1 3 3 1 |
| 50 | R | R | 50 | 2 3 1 1 3 1 |
| 51 | S | S | 51 | 2 1 3 1 1 3 |
| 52 | T | T | 52 | 2 1 3 3 1 1 |
| 53 | U | U | 53 | 2 1 3 1 3 1 |
| 54 | V | V | 54 | 3 1 1 1 2 3 |
| 55 | W | W | 55 | 3 1 1 3 2 1 |
| 56 | X | X | 56 | 3 3 1 1 2 1 |
| 57 | Y | Y | 57 | 3 1 2 1 1 3 |
| 58 | Z | Z | 58 | 3 1 2 3 1 1 |
| 59 | [ | [ | 59 | 3 3 2 1 1 1 |
| 60 | \ | \ | 60 | 3 1 4 1 1 1 |
| 61 | ] | ] | 61 | 2 2 1 4 1 1 |
| 62 | ^ | ^ | 62 | 4 3 1 1 1 1 |
| 63 | _ | _ | 63 | 1 1 1 2 2 4 |
| 64 | NUL | ` | 64 | 1 1 1 4 2 2 |
| 65 | SOH | a | 65 | 1 2 1 1 2 4 |
| 66 | STX | b | 66 | 1 2 1 4 2 1 |
| 67 | ETX | c | 67 | 1 4 1 1 2 2 |
| 68 | EOT | d | 68 | 1 4 1 2 2 1 |
| 69 | ENQ | e | 69 | 1 1 2 2 1 4 |
| 70 | ACK | f | 70 | 1 1 2 4 1 2 |
| 71 | BEL | g | 71 | 1 2 2 1 1 4 |
| 72 | BS | h | 72 | 1 2 2 4 1 1 |
| 73 | HT | i | 73 | 1 4 2 1 1 2 |
| 74 | LF | j | 74 | 1 4 2 2 1 1 |
| 75 | VT | k | 75 | 2 4 1 2 1 1 |
| 76 | FF | I | 76 | 2 2 1 1 1 4 |
| 77 | CR | m | 77 | 4 1 3 1 1 1 |
| 78 | SO | n | 78 | 2 4 1 1 1 2 |
| 79 | SI | o | 79 | 1 3 4 1 1 1 |
| 80 | DLE | p | 80 | 1 1 1 2 4 2 |
| 81 | DC1 | q | 81 | 1 2 1 1 4 2 |
| 82 | DC2 | r | 82 | 1 2 1 2 4 1 |
| 83 | DC3 | s | 83 | 1 1 4 2 1 2 |
| 84 | DC4 | t | 84 | 1 2 4 1 1 2 |
| 85 | NAK | u | 85 | 1 2 4 2 1 1 |
| 86 | SYN | v | 86 | 4 1 1 2 1 2 |
| 87 | ETB | w | 87 | 4 2 1 1 1 2 |
| 88 | CAN | x | 88 | 4 2 1 2 1 1 |
| 89 | EM | y | 89 | 2 1 2 1 4 1 |
| 90 | SUB | z | 90 | 2 1 4 1 2 1 |
| 91 | ESC | { | 91 | 4 1 2 1 2 1 |
| 92 | FS | | | 92 | 1 1 1 1 4 3 |
| 93 | GS | } | 93 | 1 1 1 3 4 1 |
| 94 | RS | ~ | 94 | 1 3 1 1 4 1 |
| 95 | US | DEL | 95 | 1 1 4 1 1 3 |
| 96 | FNC 3 | FNC 3 | 96 | 1 1 4 3 1 1 |
| 97 | FNC 2 | FNC 2 | 97 | 4 1 1 1 1 3 |
| 98 | SHIFT | SHIFT | 98 | 4 1 1 3 1 1 |
| 99 | CODE C | CODE C | 99 | 1 1 3 1 4 1 |
| 100 | CODE B | FNC 4 | CODE B | 1 1 4 1 3 1 |
| 101 | FNC 4 | CODE A | CODE A | 3 1 1 1 4 1 |
| 102 | FNC 1 | FNC 1 | FNC 1 | 4 1 1 1 3 1 |
| 103 | Start A | Start A | Start A | 2 1 1 4 1 2 |
| 104 | Start B | Start B | Start B | 2 1 1 2 1 4 |
| 105 | Start C | Start C | Start C | 2 1 1 2 3 2 |
| 106 | Stop | Stop | Stop | 2 3 3 1 1 1 2 |
4.参考文献
http://blog.csdn.net/jato333/article/details/3748375
http://blog.csdn.net/dengchonglin/article/details/7680722
Code 128 规则解析的更多相关文章
- apache伪静态规则解析
apache伪静态规则解析 最近有个客户有个要求,昨天折腾了一会,没解决,今天没啥就多学习学习 还是根据例子来学习比较快 1 简单的重定向规则 RewriteEngine On //启动规则 Rewr ...
- 一维码Code 128简介及其解码实现(zxing-cpp)
一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大. Cod ...
- (zxing.net)一维码Code 128的简介、实现与解码
一.简介 一维码Code 128:1981年推出,是一种长度可变.连续性的字母数字条码.与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大 ...
- 常见条码类型介绍(Code 39、Code 128、EAN-8、EAN-13、EAN-128、ISSN、TIF、TIF-14、UPC(A)、UPC(E))
常见条码类型,如下: 1.Code 39 Code 39,又称为"Code 3 of 9",是非零售市场中最常用的格式,用于盘存和跟踪.Code 39码编码规则简单,误码率低.所能 ...
- C# 条形码 生成函数 (Code 128 标准
C# 条形码 生成函数 (Code 128 标准参考:GB/T 18347-2001) 最近在做单据打印,发现客户要求用到条形码,在网上找了,发现只有一些条形码的标准,但打出来发现根本不能扫,还要加某 ...
- GitHub上传不了的解决 ssh: connect to host github.com port 22: Bad file number git did not exit cleanly (exit code 128)
问题情况 本来一直用的是github的客户端,结果现在上传的时候出问题了,去网站上看,新项目已经创建,但是代码却怎么都上传不上去.于是只好用命令行的方式解决. Tortoisegit上是这样说的: g ...
- 二维码(QR Code)生成与解析
二维码(QR Code)生成与解析 写在前面 经常在大街上听到扫码送什么什么,如果真闲着没事,从头扫到位,估计书包都装满了各种东西.各种扫各种送,太泛滥了.项目中从没接触过二维码的东东,最近要使用,就 ...
- [Jenkins][git]构建时提示Caused by: hudson.plugins.git.GitException: Command "/usr/bin/git reset --hard" returned status code 128:
--------------------- 如需转载,转载请注明出处. --------------------- 今日发现所有IOS构建相关的job全部失败,并提示如下错误: ERROR: Erro ...
- 解决git did not exit cleanly (exit code 128)
最近在用git提交代码到部门服务器上的时候,总是有 提示 git did not exit cleanly (exit code 128).网上有2种解决方式: 1.替换路径 1.鼠标右键 -> ...
随机推荐
- CocoStudio基础教程(2)关联程序逻辑与cocoStudio导出文件
1.概述 上篇说到将CocoStudio的导出文件在程序中运行出来,但是并没有用户交互,即点击响应,程序的逻辑判断也都没有.这篇中我们把它们加进去,这样就可以算一个完整的程序了. 2.界面编辑 大部分 ...
- Python webpy微信公众号开发之 回复图文消息
新建图文回复模板reply_pictext.xml: $def with (toUser,fromUser,createTime,title1,description1,picurl1,url1)&l ...
- json串转对象
// 引入相应的包 //json-lib-2.2-jdk15.jar import net.sf.json.JSONArray;import net.sf.json.JSONObject; 1. // ...
- Kruskal vs Borůvka
做了个对比.Borůvka算法对于稠密图效果特别好.这两个都是求生成森林的算法.Prim+heap+tarjan过于难写不写了. V=200,E=1000 Kruskal method 4875048 ...
- php 二分查找
<?php /**二分查找:查找一个值在数组中的位置 * @$arr:操作的数组,前提是按顺序排列 * @$val:查找的值 * @$start:查找的起始位置,默认从数组的第一个数找起 * @ ...
- 获取网页文档的URL和连接来源
<script type="text/javascript">document.write("链接来源:"+document.referrer+&q ...
- Eclipse在已创建的project中导入其他文件
Eclipse在已创建的project中导入其他文件 前两天被同事问到,如何通过不拷贝源文件的方式,在之前已经创建好的project中直接导入其他目录下的文件, 整理了一下,将目前所知道的eclips ...
- 25.在从1到n的正数中1出现的次数[NumberOf1Between1_N]
[题目] 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. [分析] 这是一道广为流传的goo ...
- mysql varchar
2013年9月13日 14:58:43 MYSQL的varchar数据类型 先说结论: 如果设置字段长度为30,字符编码为utf8,那么一个汉字算一个字符,一个数字算一个字符,一个字母也算一个字符 版 ...
- 101 个 MySQL 的调节和优化的提示(根据实际情况调整,有些已经不适用)
英文原文:101 Tips to MySQL Tuning and Optimization ( July 12, 2011)翻译:http://www.oschina.net/translate/1 ...