<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <pre> IMEI校验码算法: (1).将偶数位数字分别乘以2,分别计算个位数和十位数之和 (2).将奇数位数字相加,再加上上一步算得的值 (3).如果得出的数个位是0则校验位为0,否则为10减去个位数 如:35 89 01 80 69 72 41 偶数位乘以2得到5*2=10 9*2=18 1*2=02 0*2=00 9*2=18 2*2=04 1*2=02,计算奇数位数字之和和偶数位个位十位之和,得到 3+(1+0)+8+(1+8)+0+(0+2)+8+(0+0)+6+(1+8)+7+(0+4)+4+(0+2)=63 => 校验位 10-3 = 7 </pre> <!--35 89 01 80 69 72 41 7--> <input type="text" value='358901806972417' /> <button onclick="check()">校验</button><br /> <p>批量生成IMEI</p> 数量:<input type="text" id="num" value="1" /> <button onclick="generate()">生成</button> <div id="box"></div> <script type="text/javascript"> var oInput = document.getElementsByTagName("input")[0]; function check(){ var val = oInput.value; if(val && val.length == 15){ // var res = checkNum(sumIMEI(val.slice(0,14)), val.slice(-1)); var res = checkNum(calLastNum(sumIMEI(val.slice(0,14))),val.slice(-1)) console.log("校验结果", res); return res; }else{ console.log("长度有误"); return false; } } function doubleNum (n){ if(n === undefined || n === null){ return ""; } n = String(n); if(n.length > 2){ return n }else{ n = "0" + n; return n.slice(-2); } } function sumIMEI(str){ // 传入IMEI的前14位 var res = 0, tempNum, tempStr; for(let i = 0, len = str.length; i < len; i++){ if(i % 2 == 0){ // 奇数位 res += Number(str[i]); } else { // 偶数位 tempNum = Number(str[i]) * 2; tempStr = doubleNum(tempNum); res += Number(tempStr[0]) + Number(tempStr[1]); } } console.log(res); return res; } function checkNum(rightTestNum, t){ // 校验位校验 num:sumIMEI的结果,t:IMEI的最后一位校验位 console.log("正确的校验位", rightTestNum); if(rightTestNum == t){ return true; }else{ return false; } } function calLastNum(num){ var temp = String(num); var rightTestNum; console.log(temp.slice(-1)); var lastNum = Number(temp.slice(-1)); if(lastNum){ // 末位不为0,用 10-末位 rightTestNum = 10 - lastNum; }else{ // 末位为0,返回0 rightTestNum = lastNum; } return rightTestNum; } function generate(){ var arr = []; var count = Number(document.getElementById("num").value); if(!count){ return arr; } for(let i = 0; i <count; i++){ var str = String(Math.random()).slice(-14); var num = sumIMEI(str); var lastNum = calLastNum(num); arr.push(str + lastNum); } console.log(arr); var oDiv = document.getElementById("box"); oDiv.innerHTML = ""; arr.forEach(item => { oDiv.innerHTML += "<p>" + item + "</p>"; }) return arr; } </script> </body> </html>