Mod校验码生成软件
如何使用Labelmx条码软件批量生成国家电网条码标签

用Label mx条码软件批量制作国家电网条码确定国家电网的条码类型是制作电网条码标签的关键。
国家电网的条码类型是含有校验码的Code 128 C类型,其校验算法采用的是MOD 10计算规则,同时要符合电网《GB/T 18347-2001》国标文档要求。
国家电网的标签上一般就是包含条码、文字、编号等信息。
如图:其严密性决定着电网标签的制作一定要使用专业的条码软件来制作生成。
对于用户来说,校验码不需要一个个计算,利用专业的条码打印软件可以轻松实现校验码数据生成和批量打印工作,目前市场上口碑比较好的一款就是《Label mx通用条码标签设计系统》(以下简称Label mx),国产软件,入市10多年,功能和操作手感都很好。
可以简便轻松的制作各种条码标签,下面我们就来一步步演示如何制作上图的电网条码标签。
一、启动Label mx条码软件,新建一个空白的标签文件,标签尺寸我们举例为100*32MM,打印机选择“标签打印机”,如下图:二、点击“确定”按钮,新建一张空白标签,在窗口左侧画图工具条的文字和条码工具在标签内画出如下图形,具体的画图方法请参阅软件自带的帮助教程,这里不做详述:三、条码的类型,选择Code 128 C,数据输入0110001001010101010107,长度为22位,其中最后一位是校验码,根据前面21位运算得出。
四、如何批量生成数据并打印呢,需要借助Label mx条码软件自带的批量编制工具,如下图,默认使用10进制,起始数据输入21位,勾选“自校验”,可以看出校验码是“7”,下面输入“生成数据”比如,我们要流水100条,点击“生成”按钮。
五、生成好数据,需要导出并作为数据源才能使用到条码上批量打印,如下图显示:六、由于默认保存的类型是txt文件,所以会提示如下图选项,我们采用默认“一行一个记录”的方式保存文件,确定后,导出成功,提示是否作为数据源使用,选择“是”,之后自动在标签页面上画出一个数据源,并已经连接好导出的记事本文件了。
校验码批量生成

《校验码批量生成》
《MOD校验码批量生成软件》是一款专业批量生成MOD11,10、MOD11,2、MOD10、MOD43和MOD36校验码数据的工具,功能强大、操作简单。
用户只需输入起始号码,软件将自动计算最后一位校验码。
用户可随意设置流水增减量及单个的生成数量,而后只需要输入生成的数量,软件即可一次性生成指定数量的数据,并保存在文本文件(.txt)中,用户可以选择《labelmx条码打印软件》进行批量条码打印。
MOD校验码数据生成:校验码是根据前面数据计算出最后一位的校验码,用户一般是只有起始号而没有校验码,在软件里面用户只需用起始号码,最后一位自动生成,校验码生成符合国际编码标准。
增减量:设置流水的增减量,默认为1,即按照1 2 3 4 ...规则生成,如果输入2即按照1 3 5 7 ...规则生成,以此类推,且用户可设置递增或递减流水。
单条复制:设置单个校验码的生成数量。
生成数量:设置流水生成多少个校验码数据。
分成几列:将生成的串号按几列方式输出,中间“空格”分隔;
生成输入TXT文件:将生成的校验码存在指定的文本文件中,然后通过数据源连接工具进行批量条码打印。
(下图为校验码批量生成窗口)。
常用校验码

常用校验码(奇偶校验码、海明校验码、CRC校验码)计算机系统运行时,各个部之间要进行数据交换. 为确保数据在传送过程正确无误,常使用检验码. 我们常使用的检验码有三种. 分别是奇偶校验码、海明校验码和循环冗余校验码(CRC)。
奇偶校验码奇偶校验码最简单,但只能检测出奇数位出错. 如果发生偶数位错误就无法检测. 但经研究是奇数位发生错误的概率大很多. 而且奇偶校验码无法检测出哪位出错.所以属于无法矫正错误的校验码。
奇偶校验码是奇校验码和偶校验码的统称. 它们都是通过在要校验的编码上加一位校验位组成. 如果是奇校验加上校验位后,编码中1的个数为奇数个。
如果是偶校验加上校验位后,编码中1的个数为偶数个。
例:原编码奇校验偶校验0000 0000 1 0000 00010 0010 0 0010 11100 1100 1 1100 01010 1010 1 1010 0如果发生奇数个位传输出错,那么编码中1的个数就会发生变化. 从而校验出错误,要求从新传输数据。
目前应用的奇偶校验码有3种.水平奇偶校验码对每一个数据的编码添加校验位,使信息位与校验位处于同一行.垂直奇偶校验码把数据分成若干组,一组数据排成一行,再加一行校验码. 针对每一行列采用奇校验或偶校验例: 有32位数据10100101 00110110 11001100 10101011垂直奇校验垂直偶校验数据10100101 1010010100110110 0011011011001100 1100110010101011 10101011校验00001011 11110100水平垂直奇偶校验码就是同时用水平校验和垂直校验例:奇校验奇水平偶校验偶水平数据 10100101 1 10100101 000110110 1 00110110 011001100 1 11001100 010101011 0 10101011 1校验 00001011 0 11110100 1海明校验码海明码也是利用奇偶性来校验数据的. 它是一种多重奇偶校验检错系统,它通过在数据位之间插入k 个校验位,来扩大码距,从而实现检错和纠错.设原来数据有n位,要加入k位校验码.怎么确定k的大小呢? k个校验位可以有pow(2,k) (代表2的k次方) 个编码,其中有一个代表是否出错. 剩下pow(2,k)-1个编码则用来表示到底是哪一位出错. 因为n个数据位和k个校验位都可能出错,所以k满足pow(2,k)-1 >= n+k。
NET和JAVA实现MOD37 36校验码计算

按照 MOD3736规则计算校验码:.NET版本:/// <summary>/// 计算标识校验码/// </summary>/// <param name="ValueCode">标识码前段</param>/// <returns></returns>private static string GetCertificateSourceIdCode(string ValueCode) {string Code = ValueCode.Replace("." string.Empty).ToUpper(); Dictionary<string int> dict = new Dictionary<string int>();dict.Add("0" 0);dict.Add("1" 1);dict.Add("2" 2);dict.Add("3" 3);dict.Add("4" 4);dict.Add("5" 5);dict.Add("6" 6);dict.Add("7" 7);dict.Add("8" 8);dict.Add("9" 9);dict.Add("A" 10);dict.Add("B" 11);dict.Add("C" 12);dict.Add("D" 13);dict.Add("E" 14);dict.Add("F" 15);dict.Add("G" 16);dict.Add("H" 17);dict.Add("I" 18);dict.Add("J" 19);dict.Add("K" 20);dict.Add("L" 21);dict.Add("M" 22);dict.Add("N" 23);dict.Add("O" 24);dict.Add("P" 25);dict.Add("Q" 26);dict.Add("R" 27);dict.Add("S" 28);dict.Add("T" 29);dict.Add("U" 30);dict.Add("V" 31);dict.Add("W" 32);dict.Add("X" 33);dict.Add("Y" 34);dict.Add("Z" 35);int M = 36;int pm1 = 0;for (int i = 0; i < Code.Length; i++){string key = Code[i].ToString();int s = 0;if (i == 0){s = M + dict[key];}else{s = pm1 + dict[key];}int sm = s % M;if (sm == 0)sm = M;pm1 = (sm * 2) % (M + 1);}int result = 0;if (pm1 % M != 1){result = (M + 1 - pm1) % M;}var MDict = dict.First(P => P.Value == result); return MDict.Key;}JAVA版本:/*** 校验位获取*/String getXy(String XXy){String Xy=XXy.replace(".""");int M = 36;int c = M;for (int i = 0; i < Xy.length(); i++) {c = c + getXyzh(Xy.charAt(i));c = c%M;if(c == 0){c = M;}c = c * 2;c = c % (M + 1);}int result = 0;if(c%M != 1){result = (M + 1 - c) % (M);}return getXyint(result);}int getXyzh(char c){List a=new ArrayList();a.add('0');a.add('1');a.add('2');a.add('3');a.add('4');a.add('5');a.add('6');a.add('7');a.add('8');a.add('9');a.add('A');a.add('B');a.add('C');a.add('D');a.add('E');a.add('F');a.add('G');a.add('H');a.add('I');a.add('J'); a.add('K');a.add('L');a.add('M');a.add('N');a.add('O');a.add('P');a.add('Q');a.add('R');a.add('S');a.add('T');a.add('U');a.add('V');a.add('W');a.add('X');a.add('Y');a.add('Z');for(int i=0;i<a.size();i++){if((c+"").equals(a.get(i)+"")){return i;}}return 0;}String getXyint(int i){List a=new ArrayList();a.add(0);a.add(1);a.add(2);a.add(3);a.add(4);a.add(5);a.add(6);a.add(7);a.add(8);a.add(9);a.add('A');a.add('B');a.add('C');a.add('D');a.add('E');a.add('F');a.add('G');a.add('H');a.add('I');a.add('J'); a.add('K');a.add('L');a.add('M');a.add('N');a.add('O');a.add('P');a.add('Q');a.add('R');a.add('S');a.add('T');a.add('U');a.add('V');a.add('W');a.add('X');a.add('Y');a.add('Z');return a.get(i)+"";}。
条形码生成规则_条形码的校验规则

EAN 、UPC 条码的校验位计算规则。
EAN、UPC 使用的是Mod 10 校验位计算法,具体如下示范数据[1**********] UPC-A条码将从左第一位开始奇数位相加。
0 + 2 + 4 + 6 + 8 + 0=20 将步骤1的结果乘以3。
20 X 3=60将从左向右的偶数位相加。
1 + 3 + 5 +7 + 9=25 将步骤2与步骤3的结果相加。
60 +25=85将步骤4的个位数取补,结果就是校验位,10 - 5=5如果步骤4的个位数为0,则校验位为0 实际条码为[1**********]5交叉25码校验位的计算规则。
交叉25码的校验位计算方法依然是Mod 10 :字符个数为偶数时为:10的倍数-[(奇数位的数字之和字符个数为奇数时为10的倍数-[(偶数位的数字之和514362的校验位为10*X-[(5+4+6)+3*(1+3+2)]=7(因加校验位后个数为奇数,故前面加0后为05143627。
76534的校验位为10*X-[(6+3)+3*(7+5+4)]=339码校验位的计算规则。
39码用的是Mod 43 校验计算法。
每个39码的字符有一个指定的值,如下表所示。
示范字符串为:12345ABCDE/将所有的字符转换为相应的数值并相加。
1 +2 +3 +4 +5 + 10 + 11 + 12 + 13 +14 + 40=115 将步骤1的结果除以43,取其余数。
115 / 43=2 余29校验位是步骤2余数对应的字符。
余数=229 所对应的字符是T. T 校验位.128码校验位的计算规则。
ISBN 的编码规则。
EAN 的前三位必须是978,示范数据[1**********]81 (这是EAN 码)按此公式计算7 X 10 + 8 X 9 + 0 X 8 + 1 X 7 + 2 X 6 + 4 X 5 + 3 X 4 + 8 X 3 + 8 X 2=233 233 除以11 余2 将步骤2的结果取11的补数11 - 2=9校验位为9步骤2余数为0时,校验位为0,余数为1时,补数为10,用符号X代替。
Modbus+RTU协议中字节型CRC-16算法详解

设M(x)=K(x) *xr,即M(x)的位数k+r=8*(q+p)=8*m,即m个字节(Byte)。
将余数的首位0去除,在余数的末尾后添加1位0r-6,形成新的被除数,继续与除数(1gr-1⋯g0)进行mod2运算,如此重复8次,直至m0位与除数的首位1进行异或运算,这时剩下的余数去除首位0后就是信息m7⋯m0的CRC议,常规485通讯的信息发送形式如下:
为什么新信息码与生成多项式G(x)进行模-2(mod 2)除法运算结果为0呢?
模-2(mod 2)运算采用无进位的二进制加法,恰好为异或⨁操作。
1与A做⨁,A值取反。
0与A做⨁,A值保持不变。
A⨁A = 0A与自身做⨁,其值为0。
CRC校验码的产生(K(x) *xr)mod2 G(x) = R(x)
G(x)为r+1位;K(x)为k位,K(x)*xr为k+r位,即xr使K(x)的多项式系数左移r位,添了r位的0;R(x)为r位,是CRC校验码。
新信息码N(x) = K(x) *xr+ R(x)因为K(x) *xr的后r位为0,所以上式等价于N(x) = K(x) *xr⨁R(x),此刻认为R(x)是k+r位,即认为R(x)的前k个系数为0。
设M100 mod2 G(x) = A1A2,M100表示3个字节,其中后两个字节为0;G(x)是17位的生成多项式;A1A2是CRC校验码,两个字节。则对于任意三个字节的数据M1M2M3,有M1M2M3mod2 G(x)= (M100⨁0M2M3) mod2 G(x) = ((M100 mod2 G(x))⨁((0M2M3mod2 G(x)) =A1A2⨁M2M3。
验证码生成器的使用方法
验证码生成器的使用方法
验证码生成器是一种用于生成验证码的程序,通常用于网站或应用程序中,以验证用户身份并防止恶意行为。
以下是验证码生成器的一般使用方法:
1. 安装和配置:首先,您需要将验证码生成器添加到您的网站或应用程序中。
这通常涉及将其代码库克隆到您的项目中,然后根据需要进行配置。
这可能涉及设置验证码的尺寸、颜色、字体、背景等属性。
2. 调用生成器:在您的代码中,您需要调用验证码生成器来生成验证码。
这通常涉及创建一个生成器实例,然后调用其生成方法。
例如,您可以使用以下代码创建一个生成器实例并生成一个验证码:
```python
import captcha
captcha_generator = ()
captcha_()
```
3. 显示验证码:在您的网站或应用程序中,您需要将生成的验证码显示给用户。
这通常涉及将验证码图像呈现给用户,例如将其嵌入到网页中。
验证码
图像可以以多种方式呈现,例如通过在网页上显示一个图像标签或通过在前端JavaScript代码中动态生成图像。
4. 验证用户输入:当用户输入验证码时,您需要验证他们输入的字符是否与生成的验证码匹配。
这通常涉及将用户输入与生成的验证码进行比较,以确认它们是否匹配。
如果匹配,则用户输入有效;否则,用户输入无效,您需要要求他们重新输入验证码。
需要注意的是,具体的验证码生成器和用法可能因库和实现而异。
因此,您应该查阅您所使用的特定库的文档以获取更详细的说明和用法示例。
循环冗余校验码
检错性能
能检测出全部单个错误 能检测出全部随机二位错误 能检测出全部奇数个错误 能检测出全部长度小于k位的突发错误 能以[1-(1/2)k-1]概率检测出长度为(k+1) 位的突发性错误
例如:g(x)=x^4+x^3+x^2+1,(7,3)码,信息码 110产生的CRC码就是: 对于g(x)=x^4+x^3+x^2+1的解释:(都是从右往 左数)x4就是第五位是1,因为没有x1所以第2位 就是0。 11101 | 110,0000(设a=11101 ,b=1100000) 用b除以a做模2运算得到余数:1001 余数是1001,所以CRC码是1001,传输码为: 110,1001
若信息码字为11100011,生成多项式 G(X) =X5+X4+X+1,则计算出的 CRC 校验码为? 1110001100000/110011=10110110*11001 1+11010,所以11010是校验码。
课堂练习题
设某一循环码,其生成多项式为G(X)=X5 + X2+1,试求出信息序列1101010101011的循 环校验码CRC(要求写出计算步骤)。
6.CRC码生成器和校验器 循环冗余码生成器采用模2除法。下图显 示了这一过程。 CRC校验器的功能完全像发生器一样,当 收到附加了CRC码的数据后,做同样的模 2 除法。如果余数是全0,则将CRC码丢 弃,接受数据。否则,丢弃收到的数据。
பைடு நூலகம்
CRC校验码的生成器和校验器
数据
r个比特0数据
数据
1011011 x6+x4+x3+x+1
JAVA验证身份证号码校验码是否正确
JAVA验证⾝份证号码校验码是否正确JAVA验证⾝份证号码校验码是否正确【设计思路】1、将⾝份证号码前17位数分别乘以不同的系数。
从第⼀位到第⼗七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;2、将这17位数字和系数相乘的结果相加;3、⽤加出来和除以11,看余数是多少;4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。
其分别对应的最后⼀位⾝份证的号码为1 0 X 9 8 7 6 5 4 3 2;【代码实现思路】1、使⽤Scanner⼯具类获取输⼊的字符串;2、将输⼊的字符串转换为字符数组(使⽤toCharArray()⽅法),字符类型可直接参与数学运算;3、查询ASCII码表可知数字0在表中对应的编码为48,⼀次类推,故每个char字符需要减去48,才能代表其实际数值;4、创建⼀个Map集合,⽤于存放计算后的余数与校验码对应的值;5、根据计算出的余数获取Map集合的校验码与输⼊的校验码进⾏对⽐,可得出输⼊的⾝份证号是否合法;import java.util.HashMap;import java.util.Map;import java.util.Scanner;/*** @author ⼆师兄想吃⾁* @version 1.0* @date 2020/12/23 13:55*/public class Demo {public static void main(String[] args) {// 创建键盘输⼊对象Scanner sc = new Scanner(System.in);System.out.println("---请输⼊前18位⾝份证号码---");// 获取键盘输⼊的值String idNo = sc.next();// 将输⼊的字符串转换为字符数组,⽅便计算char[] chars = idNo.toCharArray();// 将字符数组每个字符减去 48 为真实数值(可查阅ASCII表)int sum =(chars[0] - 48 ) * 7 +(chars[1] - 48 ) * 9 +(chars[2] - 48 ) * 10 +(chars[3] - 48 ) * 5 +(chars[4] - 48 ) * 8 +(chars[5] - 48 ) * 4 +(chars[6] - 48 ) * 2 +(chars[7] - 48 ) * 1 +(chars[8] - 48 ) * 6 +(chars[9] - 48 ) * 3 +(chars[10] - 48 ) * 7 +(chars[11] - 48 ) * 9 +(chars[12] - 48 ) * 10 +(chars[13] - 48 ) * 5 +(chars[14] - 48 ) * 8 +(chars[15] - 48 ) * 4 +(chars[16] - 48 ) * 2;// 取模运算int mod = sum % 11;// 采⽤键值对的形式存储余数与校验码的对应关系Map<Integer,Character> map = new HashMap<>(11);map.put(0,'1');map.put(1,'0');map.put(2,'X');map.put(3,'9');map.put(4,'8');map.put(5,'7');map.put(6,'6');map.put(7,'5');map.put(8,'4');map.put(9,'3');map.put(10,'2');// 根据计算出的余数获取到校验码Character character = map.get(mod);// 将输⼊的校验码与获取到的校验码进⾏⽐较if (chars[17] == character) {System.out.println("⾝份证号码正确!");} else {System.out.println("⾝份证号码错误!");System.out.println("最后⼀位校验码应为:" + character);}}}以上为校验码判断的核⼼代码,未进⾏异常处理以下为完善后的代码import java.util.Map;import java.util.Random;import java.util.Scanner;import java.util.concurrent.ConcurrentHashMap;/*** @author ⼆师兄想吃⾁* @version 1.0* @Title: ⾝份证校验码* @Description: 校验⾝份证号码和⽣成⾝份证校验码* @date 2020/12/17 11:55*/public class Demo01 {public static void main(String[] args) throws Exception {randomMethod();}/*** 随机执⾏校验⾝份证号码⽅法、⽣成⾝份证校验码⽅法、打印矩形* @throws Exception*/public static void randomMethod() throws Exception{while(true){int i = new Random().nextInt(15);if(i % 3 == 0){checkIdNo();}else if(i % 3 == 1){makeCheckCode();}else if(i % 3 == 2){System.out.println("\n---你看↓↓↓突然就想打印个矩形---");for (int width = 0; width < 5; width++) {for (int height = 0; height < 25; height++) {Thread.sleep(50);System.out.print("*");}System.out.println();}}}}/*** 校验输⼊的18位⾝份证号码输⼊是否正确* @throws Exception*/public static void checkIdNo() throws Exception {System.out.println();Scanner sc = new Scanner(System.in);System.out.println("---请输⼊18位⾝份证号码---");if(sc.hasNext()){String str = sc.next();int length = str.length();if(length == 18){char aChar = str.charAt(17);if((aChar < 48 || aChar > 57) && (aChar != 88 && aChar != 120)){System.out.println("你第" + length + "位输错了。
骑马与砍杀MOD制作及导入
中新建文本文档里是代码格式为itm_011 Barded_Warhorse Warhorse 1 barded1W 0 65537 0 1811110595670016 0.000000 4 0 58 0 4 165 44 38 111 0 32 015 19这样的代码全部内容复制到你的战团目录MOD目录下的item_kinds1.txt的最下方,数清这样的代码有多少条,然后在item_kinds1.txt 文件内容第二行的统计数字上加上你所导入的装备代码条数.[比如本来数字是500,你导入了10条代码就变成500+10=510.把数字改为510就行了] (当然了,我这个装备包已经帮你数好了,一共是111。
而有人问怎么改充裕度,上面那个红4就是,区间是0~255)格式为load_mod_resource = XXX 的代码复制到你的战团目录MOD目录下的module.ini的最下方。
没有这条代码也没关系,XXX就是BRF文件的名字格式为itm_giant_dargon1|巴洛克itm_giant_dargon1_pl|巴洛克这样的代码是汉化文件,将内容复制到你的战团目录MOD目录languages\cns\ 下的item_kinds.csv文件最下方(注意用记事本打开)如果没有这样的代码也没关系,可以自己按照这个格式做汉化。
(当然了喜欢玩英文的无视这个)想要添加更多的装备请自行查看模型文件并添加,用:新的开源BRF导入/导出工具——OpenBRF开源BRF导入/导出工具——OpenBRF[更新到0.0.49b版]OpenBRF, BRF, 导入, 动画, 骨骼本帖最后由foxyman 于2010-10-9 16:39 编辑原帖地址:OpenBRF (a new brfEdit!)翻译by foxymanfoxyman注(2010年10月9日):从现在起官网的OpenBRF发布全部自带多语言翻译了,所以每次官网更新的时候各位骑友都可以直接下载到包含汉化的版本。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《MOD校验码批量生成软件》
《MOD校验码批量生成软件》是由恒佑科技研发的一款专业批量生成MOD11,10、MOD11,2、MOD10、MOD43和MOD36校验码数据的工具,功能强大、操作简单。
用户只需输入起始号码,软件将自动计算最后一位校验码。
用户可随意设置流水增减量及单个的生成数量,而后只需要输入生成的数量,软件即可一次性生成指定数量的数据,并保存在文本文件(.txt)中,用户可以选择《labelmx条码打印软件》进行批量条码打印。
MOD校验码数据生成:校验码是根据前面数据计算出最后一位的校验码,用户一般是只有起始号而没有校验码,在软件里面用户只需用起始号码,最后一位自动生成,校验码生成符合国际编码标准。
增减量:设置流水的增减量,默认为1,即按照1 2 3 4 ...规则生成,如果输入2即按照1 3 5 7 ...规则生成,以此类推,且用户可设置递增或递减流水。
单条复制:设置单个校验码的生成数量。
生成数量:设置流水生成多少个校验码数据。
分成几列:将生成的串号按几列方式输出,中间“空格”分隔;
生成输入TXT文件:将生成的校验码存在指定的文本文件中,然后通过数据源连接工具进行批量条码打印。
(下图为校验码批量生成窗口)。