C#条形码生成(三)----简单的三种Code128实现
来源:互联网 发布:出国游经济好玩知乎 编辑:程序博客网 时间:2024/05/21 14:05
编写这三类条形码的时候,网上baidu来baidu去,就是没找到关于Code128A,Code128B,Code128C的明确定义,然后就按照网上通用的说法只取相应的字符集来编写了这部分代码
CodeA
public class Code128A : absCode128 { /// <summary> /// Code128A条形码,只支持128字符集A(数字、大写字母、控制字符) /// </summary> /// <param name="encodedData"></param> public Code128A(string rawData) : base(rawData) { } protected override bool RawDataCheck() { //128字符集A对应的ASCII码范围为0~95 foreach (char c in this._rawData) { byte tempC = (byte)c; if (tempC <= 95) { continue; } else { return false; } } return true; } protected override string GetEncodedData() { StringBuilder tempBuilder = new StringBuilder(); tempBuilder.Append(Code128.BSList[Code128.StartA]);//加上起始符StartA byte sIndex; int checkNum = Code128.StartA;//校验字符 for (int i = 0; i < this._rawData.Length; i++) { sIndex = Code128.GetSIndexFromA(this._rawData[i]); tempBuilder.Append(Code128.BSList[sIndex]); checkNum += (i + 1) * sIndex; } checkNum %= 103; tempBuilder.Append(Code128.BSList[checkNum]);//加上校验符 tempBuilder.Append(Code128.BSList[Code128.Stop]);//加上结束符 return tempBuilder.ToString(); } }
Code128B
/// <summary> /// Code128B条形码,只支持128字符集B(数字、大小字母、字符) /// </summary> public class Code128B : absCode128 { public Code128B(string rawData) : base(rawData) { } protected override bool RawDataCheck() { //128字符集B对应的ASCII码范围为32~127 foreach (char c in this._rawData) { byte tempC = (byte)c; if (tempC >= 32 && tempC <= 127) { continue; } else { return false; } } return true; } protected override string GetEncodedData() { StringBuilder tempBuilder = new StringBuilder(); tempBuilder.Append(Code128.BSList[Code128.StartB]);//加上起始符StartB byte sIndex; int checkNum = Code128.StartB;//校验字符 for (int i = 0; i < this._rawData.Length; i++) { sIndex = Code128.GetSIndexFromB(this._rawData[i]);//字符集B中ASCII码 减去32后就等于符号字符值 tempBuilder.Append(Code128.BSList[sIndex]); checkNum += (i + 1) * sIndex; } checkNum %= 103; tempBuilder.Append(Code128.BSList[checkNum]);//加上校验符 tempBuilder.Append(Code128.BSList[Code128.Stop]);//加上结束符 return tempBuilder.ToString(); } }
Code128C
/// <summary> /// Code128C条形码,只支持128字符集C(双位数字) /// </summary> public class Code128C : absCode128 { public Code128C(string rawData) : base(rawData) { } protected override bool RawDataCheck() { return Regex.IsMatch(this._rawData, @"^\d{2,96}$") && this._rawData.Length % 2 == 0;//Code128C 2个数字代表一个数据字符,所以最大可以96个数字 } protected override string GetEncodedData() { StringBuilder tempBuilder = new StringBuilder(); tempBuilder.Append(Code128.BSList[Code128.StartC]);//加上起始符StartC byte sIndex; int checkNum = Code128.StartC;//校验字符,StartC为105 for (int i = 0; i < this._rawData.Length / 2; i++) { sIndex = byte.Parse(this._rawData.Substring(i * 2, 2)); tempBuilder.Append(Code128.BSList[sIndex]); checkNum += (i + 1) * sIndex; } checkNum %= 103; tempBuilder.Append(Code128.BSList[checkNum]);//加上校验符 tempBuilder.Append(Code128.BSList[Code128.Stop]);//加上结束符 return tempBuilder.ToString(); } }
- C#条形码生成(三)----简单的三种Code128实现
- C#生成code128条形码
- C#生成code128条形码
- C#生成Code128条形码
- C#条形码生成(一)----接口、Code128基础数据、枚举
- C#条形码生成(二)----Code128抽象类
- c# code128条形码 文字居中
- C#生成条形码图片的简单方法
- C# 生成Code128码
- C#生成Code128码
- 一维条形码 code128 的全面介绍
- C#实现批量生成条形码 ——主要用于准考证号的条形码生成
- C#生成XML的三种途径
- C#生成XML的三种途径
- C#生成XML的三种途径
- C#生成随机数的三种方法
- C#生成XML的三种途径
- C#生成随机数的三种方法
- STL vector用法介绍
- Linux 系统操作
- 来信, 创业 和 移动互联网
- window service时遇到的问题
- linux ubuntu10.10 文件解压之后乱码问题汇总
- C#条形码生成(三)----简单的三种Code128实现
- 切忌在多线程中刷新界面
- .NET对Excel的读写
- WIN7系统下装XP双系统实现
- 3D空间的坐标系
- 2011-12-31
- Android找到本地联络人并向其发邮件
- VB2005中通过串口发送命令
- asp.net关于时间方法,当前月有多少天、求某年有多少周、求当前日期是一年的中第几周