Barcode39 校验码算法

合集下载

校验码的计算方法

校验码的计算方法

=====WORD完整版----可编辑----专业资料分享=====
校验码的计算方法
1.代码位置序号
代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。

2.计算步骤
校验码的计算步骤如下:
a.从代码位置序号2开始,所有偶数位的数字代码求和。

b.将步骤a的和乘以3。

c.从代码位置序号3开始,所有奇数位的数字代码求和。

d.将步骤b与步骤c的结果相加。

e.用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。

示例:代码690123456789X1校验码的计算见表B.1。

表1 校验码的计算方法
----完整版学习资料分享----。

code39的c语言 -回复

code39的c语言 -回复

code39的c语言-回复Code39是一种常用的线条编码系统,广泛应用于各种条形码的生成和识别。

本文将逐步介绍Code39的原理、编码规则以及如何生成和解码Code39条形码。

Code39的原理是基于一组宽窄不等的线条和空白区域组成的条码,其中包含了一系列0和1的编码。

每个字符由9个元素(五个线条和四个空白区域)组成,其中三个元素是宽(w)的,六个元素是窄(n)的。

这种编码方式非常灵活,可以编码字母、数字和特殊符号等内容。

首先,我们需要了解Code39的编码规则。

Code39的字符集包含26个大写字母(A-Z)、10个数字(0-9)和9个特殊字符(-、.、、/、+、、空格、*、))。

其中,字母和数字都有各自对应的编码,特殊字符的编码与数字编码类似。

例如,字母A对应的编码是101001101,数字1对应的编码是100101101,特殊字符-对应的编码是100100101等。

接下来,我们来了解Code39条形码的生成过程。

首先,我们需要输入要生成条形码的内容。

然后,将输入的内容转换为对应的编码。

例如,输入字母A,我们需要找到字母A对应的编码101001101。

可以事先将每个字符的编码以数组的形式存储起来,方便后续的编码转换操作。

一旦我们得到了输入内容对应的编码序列,我们就可以开始生成条形码了。

首先,我们将开始符*(编码110100101)添加到条形码开头,并在条码末尾添加结束符*(编码110001101)。

这样可以标记条形码的起始和结束位置。

然后,我们根据编码中的每一个元素,选择合适的线条或空白区域来组成条形码。

根据Code39的编码规则,我们可以选择两种线条的宽度,分别为w和n。

一般而言,线条的宽度为1个单位,空白区域的宽度为3个单位。

例如,对应编码1,我们可以选择一个宽度为w的线条和两个宽度为n的空白区域。

根据编码选择线条和空白区域之后,我们将它们依次排列,最终形成一个完整的Code39条形码。

39码条码规则

39码条码规则

39码条码规则39码基本知识◆39码是国内常见的条形码之一,三九码39码是在公元1974年发展出来的条形码系统。

三九码之所以在国内常见的原因有两个,一个是因为三九码的限制很少,而且支持文数字;另一个则是它很适用在非正式场合中。

◆三九码的长度,没有强迫性的限制,随着使用者的需求,可自由地调整。

唯在规划时,应该考虑到条形码阅读机(Barcode Reader)所能容许的范围为限,才不致于会有无法读取完整的问题发生。

◆三九码所能表示的资料内容,包含有:0~9 的数字,大写A~Z 的英文字母,「+」,「-」,「*」,「/」,「%」,「$」,「.」,以及空格符(Space)等,共44组编码。

◆三九码在读取方面,允许读码机进行双向的扫瞄读取;也就是说,如果使用者把三九码倒着读取也是得到相同的结果。

◆三九码的检查码,可有可无;使用者可自行斟酌使用。

◆三九码所占用的空间较一般条形码来的宽大。

◆三九码的起始码与终止码均为* 字符。

39码结构特性◆三九码的构成元素如下:起始码 + 资料码 + 终止码◆图解1:起始码下面条形码的蓝色的部份为起始码◆图解2:资料码下面条形码的蓝色的部份为资料码◆图解3:终止码下面条形码的蓝色的部份为终止码39码特殊应用39码的缺点是只能表示 0~9、大写 A~Z、及8个特殊字符等,共44个字符。

但......难道我们就不能显示小写的字母或其它的字符吗??答案是可以的。

在39码的规则里,尚有一个方法可以显示出ASCII 128个字符;那就是搭配我们所提到的8个特殊字符「+」,「-」,「*」,「/」,「%」,「$」,「.」。

但是这种方法必需是您的读码机有提供读取Code 39 Full ASCII 的功能才可以喔!!下面看看每一个字符的对照表及使用原理。

原理:◆状况一:当读码机尚未设定成 Code 39 Full ASCII 功能时......读码机读取到下列的条形码时,会显示出 +U+V◆状况二:当读码机设定成 Code 39 Full ASCII 功能时......码机读取到下列的条形码时,会显示出小写 uv。

CODE编码方式中文

CODE编码方式中文

CODE 39 编码方式CODE 39 背景资料Code 39,待开发的第??一个字母数字的符号,是仍然被广泛使用,尤其是在非零售环境。

它是由美国国防部使用的标准条形码,是由卫生行业条码委员会(HIBCC)也可用于。

39码也被称为“3 9中的代码”和“美元3”。

一个典型的代码39条码是:Code 39是一个离散的,可变长度的符号。

这是自我检查,在一个单一的的打印缺陷,不能转置成另一种有效的字符的字符。

计算校验和位数由于39码是自我检查,校验位通常是没有必要的。

然而,在应用要求的精度非常高的水平的一个模43校验位数字可能会增加。

1. 要计算的可选校验数字,请按照下列步骤。

1。

以条形码的每个字符的值(0到42)。

启动和停止字符不包括在校验和计算。

2. 萨姆在步骤1中所描述的每个字符的每个值的值。

3. 43,从第2步划分的结果。

4. 在第3步师的其余部分将被追加到前停止字符的数据电文的校验字符。

编码符号一旦校验数字已计算,我们知道整个消息必须在酒吧和空间编码。

继续我们的例子中,我们会从零编码,Code 39条码使用我们在上面的例子:一个67位数的校验HI345678。

在下面的文本,我们将讨论通过条码的编码,考虑到数字“1”代表“暗”或“bar”,而“0”的条形码代表“轻”或“空间”部分条形码。

因此,数字1101代表一个双宽条(11),由一个单一的广阔的空间(0)单宽条(1),。

这将是印在条码:一个Code 39条码的架构一个Code 39条码具有以下结构:1。

一个起始字符- 星号(*)字符。

2。

从下表中的编码字符的任何数。

3。

一个可选的校验和数字计算上文所述,从下表编码。

4。

一个终止符,这是第二个星号字符。

CODE 39码的编码表此表显示了如何来编码每一个Code 39条码的数字。

请注意,“宽度编码”列的“N”和“W”为宽窄的表示,而“条码编码”列表示的条形码如何将实际编码所描述的上述“编码符号”。

记住,每个字符的开始和结束与酒吧,因而总是启动的“条码编码”和“1”结尾。

商品条码的校验码是如何计算的

商品条码的校验码是如何计算的

商品条码的校验码是如何计算的在百度上看到这样一个问题:为什么通过下载的标签制作软件制作的商品标签的校验位和原来的不一样?并附了两张图。

这里小编用中琅领跑条码标签设计软件制作了一遍发现,最后一位校验位和原来的标签一样,没什么区别。

经过一番缜密的研究分析,小编就明白了个大概,原来问题就出在那位朋友所谓的免费的条形码生成工具上。

问题的原因就在于校验码是由编码方案决定的,普通的条码软件是做不了那么精密的,所以通过免费的条形码生成软件生成的校验位是不同的,而且不但如此,通过一些不专业的条码批量打印软件制作出来的商品标签是有一点的风险的,而且出了事情也是没有客服咨询和解答的,。

所以个人还是建议大家使用一些专业的条码标签制作软件的。

言归正传,那么,条码打印软件中校验码到底是如何生成的呢?下面小编搜集了以下几种校验码的计算方法,以供参考。

首先说商品条码。

商品条码中需要计算校验码的有:EAN-8(8位),EAN-13(13位),UCC(UPC-A)(12位),GTIN-14(ITF-14)(14位),GLN(13位),SSCC(18位)等。

它们虽然位数不同,但计算校验码的方法完全相同。

1、包含校验码的所有数字从右向左编号,分别为1,2,3......18位; 2、从第2位开始,所有偶数位的权数为3,从第3位开始,所有奇数位的权数为1;3、将对应位置的代码数字与权数相乘,参见下图(以SSCC的18位数字为例);4、将所有乘积相加求和;(结果为109);5、对第4步的和,求MOD 10运算(将和109除以10,取其余数9);6、如果余数为0,则校验码为0,否则,用10减去余数的差即为校验码。

(上例中校验码为1)。

其次是身份证校验码。

身份证校验码的计算比较复杂一些,1、自右向左为身份证号编号1-18;2、确定各位数的权数,权数的计算公式为2^(i-1) mod 11 i—位数,第3位的权数为2^(3-1)=2^2=4, 4除以11,商0余4,则权数为4。

code39的c语言 -回复

code39的c语言 -回复

code39的c语言-回复什么是Code39?Code39是一种常用的线性条码(一维条码)标准,最初由美国的Intermec Technologies 公司开发。

它可以在商品包装、物流管理、库存管理、图书馆管理等领域中被广泛应用。

Code39条码可以被各种条码扫描设备扫描并解码,从而获取条码内部所代表的信息。

一、Code39条码的结构Code39条码由一系列的窄宽条和间隙组成。

它的结构包含了起始符、数据字符、校验字符和结束符。

1. 起始符:每个Code39条码都以一个宽条、窄间隙和一个宽间隙组成的起始符开始。

起始符标志了条码的开始。

2. 数据字符:Code39条码可以包含数字和大写字母,以及一些特殊的符号。

每个字符由9个元素宽的条和间隙组成,其中5个是窄的,4个是宽的。

3. 校验字符:Code39条码的校验字符可以用于检验条码的有效性,防止错误的扫描和解码。

它是由Code39条码中的数据字符计算出来的。

4. 结束符:每个Code39条码以一个宽条、窄间隙和一个宽间隙组成的结束符结束。

结束符标志了条码的结束。

二、Code39条码的编码规则每个Code39字符都有自己的编码规则,它由宽窄条的排列组成。

在Code39标准中,有43个字符可供编码,分别是数字0-9、大写字母A-Z 以及几个特殊字符。

每个字符都有一个特定的编码,可以通过它来表示这个字符。

编码规则的例子:1. 字母A的编码是宽窄条宽窄窄窄宽。

2. 数字2的编码是宽宽宽窄窄宽窄宽窄。

三、Code39条码的应用Code39条码在各种应用场景中被广泛使用。

它可以用于追踪商品的库存和物流,从而提高了物流管理的效率和准确性。

在图书馆管理中,Code39条码可以用于标记和管理图书,帮助图书馆更好地管理和定位书籍。

此外,Code39条码还可以应用于生产线上的自动化控制和数据采集。

它可以被电脑、智能手机和其他设备方便地扫描和解码,从而获取商品和相关信息。

四、Code39条码的生成与扫描Code39条码可以通过各种开源和商业的条码生成库来生成。

校验码的计算方法

校验码的计算方法

=====WORD完整版----可编辑----专业资料分享=====
校验码的计算方法
1.代码位置序号
代码位置序号是指包括校验码在内的,由右至左的顺序号(校验码的代码位置序号为1)。

2.计算步骤
校验码的计算步骤如下:
a.从代码位置序号2开始,所有偶数位的数字代码求和。

b.将步骤a的和乘以3。

c.从代码位置序号3开始,所有奇数位的数字代码求和。

d.将步骤b与步骤c的结果相加。

e.用大于或等于步骤d所得结果且为10最小整数倍的数减去步骤d所得结果,其差即为所求校验码的值。

示例:代码690123456789X1校验码的计算见表B.1。

表1 校验码的计算方法
----完整版学习资料分享----。

条码生成代码(Code39码)

条码生成代码(Code39码)

条码⽣成代码(Code39码)的『Code 39条形码介绍』 code39条码能表⽰字母、数字和其它⼀些符号共43个字符:A -Z, 0-9, -.$/ + %, space等,其主要特点如下: ◆条码的长度是可变化的 ◆通常⽤“*”号作为起始、终⽌符 ◆校验码不⽤ ◆代码密度介于3 - 9.4个字符/每英⼨ ◆空⽩区是窄条的10倍 ◆⽤于⼯业、图书、以及票证⾃动化管理上三九码是Intermec公司于1975年推出的⼀种条码,它可表⽰数字、英⽂字母以及“-”、“.”、“/”、“ ”、“%”、“$”、“ ”(空格)和“*”共44个符号,其中“*”仅作为启始符和终⽌符。

三九码且有编码规则简单、误码率低、所能表⽰字符个数多等特点,因此在各个领域有着极为⼴泛的应⽤。

我国也制定了相应的国家标准(GB12908-91)。

三九码仅有两种单元宽度——分别为宽单元和窄单元。

宽单元这宽度为窄单元的1到3倍,⼀般多选⽤2倍、2.5倍或3倍。

三九码的每⼀个条码字符由九个单元组成,其中有三个宽单元,其余是窄单元,因此称为三九码。

我国有的图书馆使⽤的39码使⽤了特殊的校验字符,条码软件都可打印适⽤于图书馆的39码。

代码原创: LovlyPuppy实现该功能分两个类,第⼀个类 DrawImageBord.csusing System.Drawing;using System.Drawing.Imaging;public abstract class DrawImageBord...{protected virtual string BordRuleName...{get ...{ return string.Empty; }}protected virtual System.Collections.Hashtable Roles...{get ...{ return new System.Collections.Hashtable(); }}string drawString;int width = 800; //画布的宽度(可计算)int height = 36;//1CMint unitWidth = 1; //int currentLocation = 0;public DrawImageBord(string s)...{drawString = s;}public virtual void Draw(System.IO.Stream target)...{Bitmap bm = new Bitmap(width, height);Graphics g = Graphics.FromImage(bm);g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.Default;g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;//画布和边的设定g.Clear(Color.White);g.DrawRectangle(Pens.White, 0, 0, width, height);for(int i = 0; i < drawString.Length; i++)...{this.DrawString(drawString[i].ToString(), g);}bm.Save(target, ImageFormat.Jpeg);}protected virtual void DrawString(string s, Graphics g)...{System.Collections.Hashtable hash = this.Roles;object o = hash[s];if (o == null) return;char[] chars = o.ToString().ToCharArray();if (chars.Length > 9) return;SolidBrush blackBrush = new SolidBrush(Color.Black);SolidBrush witeBrush = new SolidBrush(Color.White);for(int i = 0; i < 5; i++)...{//画第⼀个 0 ⿊条if (chars[i] == '0')...{Rectangle re1 = new Rectangle(currentLocation, 0, unitWidth, height);g.FillRectangle(blackBrush, re1);currentLocation += unitWidth;}else...{Rectangle re1 = new Rectangle(currentLocation, 0, 3 * unitWidth, height);g.FillRectangle(blackBrush, re1);currentLocation += 3 * unitWidth;}//画第6个 5 ⽩条if ((i + 5) < 9)...{if (chars[i+5] == '0')...{Rectangle re1 = new Rectangle(currentLocation, 0, unitWidth, height);g.FillRectangle(witeBrush, re1);currentLocation += unitWidth;}else...{Rectangle re1 = new Rectangle(currentLocation, 0, 3 * unitWidth, height);g.FillRectangle(witeBrush, re1);currentLocation += 3 * unitWidth;}}}Rectangle re2 = new Rectangle(currentLocation, 0, unitWidth, height);g.FillRectangle(witeBrush, re2);currentLocation += unitWidth;}}第⼆个类CODE39DrawImageBord.cs 继承DrawImageBord.csusing System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;/**//**//**//// <summary>/// CODE39DrawImageBord 的摘要说明/// </summary>public class CODE39DrawImageBord : DrawImageBord......{private System.Collections.Hashtable hash = new System.Collections.Hashtable();protected override string BordRuleName......{get ......{ return "CODE39"; }}public CODE39DrawImageBord(string s): base(s)......{}protected override System.Collections.Hashtable Roles......{get......{if (hash.Count > 0) return hash;hash.Add("0", "001100100");hash.Add("1", "100010100");hash.Add("2", "010010100");hash.Add("3", "110000100");hash.Add("4", "001010100");hash.Add("5", "101000100");hash.Add("6", "011000100");hash.Add("7", "000110100");hash.Add("8", "100100100");hash.Add("9", "010100100");hash.Add("A", "100010010");hash.Add("B", "010010010");hash.Add("C", "110000010");hash.Add("D", "001010010");hash.Add("E", "101000010");hash.Add("F", "011000010");hash.Add("G", "000110010");hash.Add("H", "100100010");hash.Add("I", "010100010");hash.Add("J", "001100010");hash.Add("K", "100010001");hash.Add("L", "010010001");hash.Add("M", "110000001");hash.Add("N", "001010001");hash.Add("O", "101000001");hash.Add("P", "011000001");hash.Add("Q", "000110001");hash.Add("R", "100100001");hash.Add("S", "010100001");hash.Add("T", "001100001");hash.Add("U", "100011000");hash.Add("V", "010011000");hash.Add("W", "110001000");hash.Add("X", "001011000");hash.Add("Y", "101001000");hash.Add("Z", "011001000");hash.Add("-", "000111000");hash.Add("%", "100101000");hash.Add("$", "010101000");hash.Add("*", "001101000");return hash;}}}调⽤的⽅法:protected void Page_Load(object sender, EventArgs e)...{CODE39DrawImageBord dr = new CODE39DrawImageBord("*3949178*"); dr.Draw(Response.OutputStream);}--显⽰结果:--显⽰结果:补充说明:⽣成的这个条码,并没有⽤扫描枪去识别,以后我会⽤Symbol DS6608数字扫描器来识别它的准确性.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

求MSCU5635320K 的校验码:
校验位计算方法如下:
1.参考以下39码的检查码查询表得出各个字符的相对值:
M的相对值:22
S的相对值:28
C的相对值:12
U的相对值:30
5的相对值:5
6的相对值:6
3的相对值:3
5的相对值:5
3的相对值:3
2的相对值:2
0的相对值:0
K的相对值:20
2.将各个相对值累加并除以43,所得余数即为相对值,查它的对应编码为:
22 + 28 + 12 + 30 + 5 + 6 + 3 + 5 + 3 + 2 + 0 + 20 = 136
136除以43 的余数为7,它的对应编码为: 7
3.所以最终的barcode为:
39码是公元1974年发展出来的条形码系统,是一种可供使用者双向扫瞄的分布式条形码,也就是说相临两数据码之间,必须包含一个不具任何意义的空白(或细白,其逻辑值为0),且其具有支持文数字的能力,故应用较一般一维条形码广泛,目前较主要利用于工业产品、商业数据及医院用的保健资料,它的最大优点是码数没有强制的限定,可用大写英文字母码,且检查码可忽略不计。

标准的39码是由起始安全空间、起始码、数据码、可忽略不计的检查码、终止安全空间及终止码所构成(徐绍文,1985),以Z135+这个资料为例,其所编成的39码如下所示:
39码的结构
综合来说,39码具有以下特性:
1. 条形码的长度没有限制,可随着需求作弹性调整。

但在规划长度的大小时,应考虑条形码阅读机所能允许的范围,避免扫瞄时无法读取完整的数据。

2. 起始码和终止码必须固定为“ * ”字符。

3. 允许条形码扫瞄器进行双向的扫瞄处理。

4. 由于39码具有自我检查能力,故检查码可有可无,不一定要设定。

5. 条形码占用的空间较大。

可表示的资料包含有:0~9的数字,A~Z的英文字母,以及“+”、“-”、“*”、“/”、“%”、“$”、“.”等特殊符号,再加上空格符“ ”,共计44组编码,并可组合出128个ASCII CODE的字符符号,如下所示。

相关文档
最新文档