轉(zhuǎn)帖|其它|編輯:郝浩|2011-06-14 14:33:53.000|閱讀 1092 次
概述:今天一來上班看到同事群里面說起EAN-13標(biāo)準(zhǔn)條形碼最后一位校驗(yàn)碼的事,于是順手用js寫了這個(gè)算法。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
今天一來上班看到同事群里面說起EAN-13標(biāo)準(zhǔn)條形碼最后一位校驗(yàn)碼的事,于是順手用js寫了這個(gè)算法。
EAN-13標(biāo)準(zhǔn)條形碼最后一位校驗(yàn)碼的計(jì)算步驟如下:
a、從代碼位置序號(hào)2開始,所有偶數(shù)位的數(shù)字代碼求和。
b、將步驟a的和乘以3。
c、從代碼位置序號(hào)3開始,所有奇數(shù)位的數(shù)字代碼求和。
d、將步驟b與步驟c的結(jié)果相加。
e、用大于或等于步驟d所得結(jié)果且為10最小整數(shù)倍的數(shù)減去步驟d所得結(jié)果,其差即為所求校驗(yàn)碼的值。
解釋: EAN-13標(biāo)準(zhǔn)條形碼代碼位置從右到左序號(hào)13 12 11 10 9 8 7 6 5 4 3 2 1
作者:網(wǎng)帆
創(chuàng)建時(shí)間:2011-06-13
*/
function isBarCode(s) {
var reg = new RegExp(/^[0-9]{12}$/);
if (reg.exec(s.substring(0, 12)))
return true;
else
return false;
}
function CheckBarCode(s) {
if (!isBarCode(s)) {
return "驗(yàn)證條形碼前12位出錯(cuò)!";
}
var a = 0;
var b = 0;
var c = 0;
var d = 0;
var e = 0;
for (var i = 1; i <= 12; i++) {
var sc = parseInt(s[i - 1]);
if (i <= 12 && i % 2 == 0) {
a += sc;
}
else if (i <= 11 && i % 2 == 1) {
b += sc;
}
}
c = a * 3;
d = b + c;
if (d % 10 == 0)
e = d - d;
else
e = d + (10 - d % 10) - d;
return e;
}
alert("校驗(yàn)碼是:" + CheckBarCode("693721090010X"));
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:網(wǎng)絡(luò)轉(zhuǎn)載