校(xiào)验(yàn)码是由(yóu)編码方(fāng)案(àn)決定(dìng)的(de),所(suǒ)以(yǐ)在(zài)代(dài)码中(zhōng)是否使用(yòng)校(xiào)验(yàn)码和(hé)条码基本(běn)無關(guān),但商品条码除外(wài)。今天(tiān)给大(dà)家(jiā)介紹几種(zhǒng)校(xiào)验(yàn)码的(de)計(jì)算方(fāng)法。

一(yī)、商品条码:
商品条码中(zhōng)需要(yào)計(jì)算校(xiào)验(yàn)码的(de)有(yǒu):EAN-8(8位(wèi)),EAN-13(13位(wèi)),UCC(UPC-A)(12位(wèi)),GTIN-14(ITF-14)(14位(wèi)),GLN(13位(wèi)),SSCC(18位(wèi))等。它(tā)们(men)雖(suī)然位(wèi)數不(bù)同,但計(jì)算校(xiào)验(yàn)码的(de)方(fāng)法完全(quán)相同。
1、包(bāo)含校(xiào)验(yàn)码的(de)所(suǒ)有(yǒu)數字從右向(xiàng)左(zuǒ)編号(hào),分(fēn)别为(wèi)1,2,3......18位(wèi);
2、從第(dì)2位(wèi)開(kāi)始(shǐ),所(suǒ)有(yǒu)偶數位(wèi)的(de)權數为(wèi)3,從第(dì)3位(wèi)開(kāi)始(shǐ),所(suǒ)有(yǒu)奇數位(wèi)的(de)權數为(wèi)1;
3、将对(duì)應(yìng)位(wèi)置的(de)代(dài)码數字與(yǔ)權數相乘,参見(jiàn)下(xià)图(tú)(以(yǐ)SSCC的(de)18位(wèi)數字为(wèi)例);
4、将所(suǒ)有(yǒu)乘積相加求和(hé);(结果(guǒ)为(wèi)109)
5、对(duì)第(dì)4步的(de)和(hé),求MOD 10運算(将和(hé)109除以(yǐ)10,取(qǔ)其(qí)餘數9);
6、如(rú)果(guǒ)餘數为(wèi)0,則校(xiào)验(yàn)码为(wèi)0,否則,用(yòng)10減去(qù)餘數的(de)差即为(wèi)校(xiào)验(yàn)码。(上例中(zhōng)校(xiào)验(yàn)码为(wèi)1)
二(èr)、身(shēn)份證校(xiào)验(yàn)码:
身(shēn)份證校(xiào)验(yàn)码的(de)計(jì)算比較複雜一(yī)些,参見(jiàn)下(xià)图(tú):
1、自(zì)右向(xiàng)左(zuǒ)为(wèi)身(shēn)份證号(hào)編号(hào)1-18;
2、确定(dìng)各(gè)位(wèi)數的(de)權數,權數的(de)計(jì)算公(gōng)式为(wèi) 2^(i-1) mod 11 i—位(wèi)數
如(rú)第(dì)3位(wèi)的(de)權數为(wèi)2^(3-1)=2^2=4, 4除以(yǐ)11,商0餘4,則權數为(wèi)4。再如(rú)第(dì)5位(wèi)的(de)權數为(wèi)2^(5-1)=2^4=16,16除以(yǐ)11,商1餘5,則權數为(wèi)5。
3、将權數與(yǔ)对(duì)應(yìng)的(de)身(shēn)份證号(hào)數字相乘;
4、将所(suǒ)有(yǒu)乘積相加求和(hé);(示例中(zhōng)的(de)184)
5、将第(dì)4步的(de)结果(guǒ)除以(yǐ)11,求餘數(示例中(zhōng)的(de)8)
6、從下(xià)表(biǎo)的(de)R值中(zhōng)找(zhǎo)到(dào)第(dì)5步的(de)结果(guǒ),对(duì)應(yìng)的(de)C值即为(wèi)校(xiào)验(yàn)码。(示例中(zhōng)8对(duì)應(yìng)的(de)是4)
三(sān)、CODE-128码的(de)校(xiào)验(yàn)符:
CODE-128码的(de)校(xiào)验(yàn)符不(bù)会(huì)出(chū)现在(zài)數據(jù)中(zhōng),也(yě)不(bù)用(yòng)读(dú)出(chū),这(zhè)里(lǐ)僅介紹一(yī)下(xià)計(jì)算方(fāng)法,實(shí)際使用(yòng)中(zhōng)都是由(yóu)条码软(ruǎn)件(jiàn)自(zì)動(dòng)生(shēng)成(chéng)的(de)。由(yóu)于(yú)CODE-128码可(kě)以(yǐ)表(biǎo)示字母、符号(hào)、控制符,而(ér)这(zhè)些字符不(bù)能(néng)直(zhí)接参與(yǔ)計(jì)算,所(suǒ)以(yǐ)要(yào)为(wèi)每个(gè)字符分(fēn)配一(yī)个(gè)码值。各(gè)个(gè)字符的(de)码值可(kě)以(yǐ)参閱CODE-128码的(de)标(biāo)準文(wén)件(jiàn)。
1、首先(xiān)为(wèi)字符串編制条码;
2、從起(qǐ)始(shǐ)符開(kāi)始(shǐ),自(zì)左(zuǒ)向(xiàng)右为(wèi)每个(gè)条码字符編号(hào);
3、为(wèi)每一(yī)个(gè)字符分(fēn)配權數,起(qǐ)始(shǐ)符和(hé)第(dì)一(yī)个(gè)字符的(de)權數为(wèi)1,以(yǐ)後(hòu)依次(cì)增加;
4、每个(gè)字符的(de)權數與(yǔ)码值相乘;
5、所(suǒ)有(yǒu)乘積求和(hé);
6、第(dì)5步的(de)结果(guǒ)除以(yǐ)103求餘數;
7、码值等于(yú)餘數的(de)字符即为(wèi)校(xiào)验(yàn)符。見(jiàn)下(xià)图(tú):
EAN-128码的(de)校(xiào)验(yàn)符的(de)計(jì)算與(yǔ)此(cǐ)相同。
從以(yǐ)上三(sān)个(gè)例子可(kě)以(yǐ)看(kàn)出(chū),几乎所(suǒ)有(yǒu)的(de)校(xiào)验(yàn)码的(de)計(jì)算都是由(yóu)以(yǐ)下(xià)步驟計(jì)算出(chū)来(lái)的(de):
1、为(wèi)代(dài)码中(zhōng)的(de)每一(yī)位(wèi)數字规定(dìng)序号(hào);
2、给每一(yī)位(wèi)代(dài)码分(fēn)配一(yī)个(gè)權數;
3、權數與(yǔ)对(duì)應(yìng)的(de)代(dài)码相乘;
4、将所(suǒ)有(yǒu)的(de)乘積相加;
5、对(duì)和(hé)進(jìn)行MOD(求餘數)運算;
6、对(duì)结果(guǒ)進(jìn)行再處(chù)理(lǐ)得到(dào)校(xiào)验(yàn)码。

