各種條碼的校驗碼算法(EAN13,COD128,GTIN,UCC等)


校驗碼是由編碼方案決定的,所以在代碼中是否使用校驗碼和條碼基本無關,但商品條碼除外。今天給大家介紹幾種校驗碼的計算方法。

一、商品條碼:

商品條碼中需要計算校驗碼的有: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 11i—位數

如第3位的權數為2^(3-1)=2^2=4, 4除以11,商0余4,則權數為4。再如第5位的權數為2^(5-1)=2^4=16,16除以11,商1余5,則權數為5。

3、將權數與對應的身份證號數字相乘;

4、將所有乘積相加求和;(示例中的184)

5、將第4步的結果除以11,求余數(示例中的8)

6、從下表的R值中找到第5步的結果,對應的C值即為校驗碼。(示例中8對應的是4)

校驗碼 

三、CODE-128碼的校驗符:

CODE-128碼的校驗符不會出現在數據中,也不用讀出,這里僅介紹一下計算方法,實際使用中都是由條碼軟件自動生成的。由於CODE-128碼可以表示字母、符號、控制符,而這些字符不能直接參與計算,所以要為每個字符分配一個碼值。各個字符的碼值可以參閱CODE-128碼的標准文件。

1、首先為字符串編制條碼;

2、從起始符開始,自左向右為每個條碼字符編號;

3、為每一個字符分配權數,起始符和第一個字符的權數為1,以后依次增加;

4、每個字符的權數與碼值相乘;

5、所有乘積求和;

6、第5步的結果除以103求余數;

7、碼值等於余數的字符即為校驗符。見下圖:

code 128 碼 校驗碼算法 

EAN-128碼的校驗符的計算與此相同。

從以上三個例子可以看出,幾乎所有的校驗碼的計算都是由以下步驟計算出來的:

1、為代碼中的每一位數字規定序號;

2、給每一位代碼分配一個權數;

3、權數與對應的代碼相乘;

4、將所有的乘積相加;

5、對和進行MOD(求余數)運算;

6、對結果進行再處理得到校驗碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM