IMEI校验思路及代码
<!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>
转载于:https://www.cnblogs.com/zhaodesheng/p/10268761.html
IMEI校验思路及代码相关推荐
- python登录代码思路_用python登录Dr.com思路以及代码分享
用python登录Dr.com思路以及代码分享 发布于 2014-08-28 22:31:52 | 192 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向对 ...
- 最全中文leetcode解题攻略:思路知识点代码...搞定AI大厂笔试
本文经AI新媒体量子位(公众号ID:qbitai)授权转载,转载请联系出处. 本文约多图,建议阅读5分钟. 本文为你分享中文leetcode解题攻略,助你通过AI大厂笔试. 当代程序员的困惑可能大致分 ...
- Android自定义Adapter的ListView的思路及代码
Android自定义Adapter的ListView的思路及代码,需要的朋友可以参考一下 width="650" height="200" align=&quo ...
- AT串口抽象层的设计思路及代码实现
文章目录 1 AT串口抽象层的设计思路及代码实现 1.1 AT串口抽象层的设计思路 1.2 AT串口抽象层的代码实现 1 AT串口抽象层的设计思路及代码实现 1.1 AT串口抽象层的设计思路 我们先来 ...
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——1~20
DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--01~20 目录 剑指offer--66道在线编程--01~20 1.二维数组中的查找某个targe ...
- ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现
ML之分类预测:机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 目录 机器学习中多分类预测数据集可视化(不同类别赋予不同颜色)设计思路及代码实现 代码实现
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——41~66
DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--41~66 目录 剑指offer之66道在线编程--41~66 42.和为s的两个数字 43.左旋转 ...
- DayDayUp之Job:牛客网—算法工程师—剑指offer之66道在线编程(解决思路及其代码)——21~40
DayDayUp之Job:牛客网-算法工程师-剑指offer之66道在线编程(解决思路及其代码)--21~41 目录 剑指offer之66道在线编程--21~41 21.栈的压入.弹出序列 22.从上 ...
- ML之XGBoost:XGBoost算法模型(相关配图)的简介(XGBoost并行处理)、关键思路、代码实现(目标函数/评价函数)、安装、使用方法、案例应用之详细攻略
ML之XGBoost:XGBoost算法模型(相关配图)的简介.关键思路.代码实现(目标函数/评价函数).安装.使用方法.案例应用之详细攻略 目录 XGBoost算法模型(相关配图)的简介 1.XGB ...
- 50行的python游戏代码_50行代码实现贪吃蛇(具体思路及代码)
[下载文档: 50行代码实现贪吃蛇(具体思路及代码).txt ] (友情提示:右键点上行txt文档名->目标另存为) 50行代码实现贪吃蛇(具体思路及代码) 最近一直在准备用来面试的几个小de ...
最新文章
- 51CTO博客弹出框精彩博文记录【2013年第二季度】
- 判断一个对象是否存在某个键_面向工业大数据的对象存储技术实践
- Scala入门到精通——第二十三节 高级类型 (二)
- C++ 初始化列表初始化列表性能问题的简单的探索
- 携程运维自动化平台,上万服务器变更也可以很轻松
- Unity2020.1新功能探路:Profiler相关更新
- SQL UNION 和 UNION ALL 操作符
- interop.cdo 发送邮件乱码_手把手教你用 Java 发送邮件,不用框架
- slickedit自定义代码片段
- 如何在手机上安装linux系统并可视化界面
- Shiro小白新手入门教程,一看就会
- django crontab UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfe in position 9: invalid start
- 默写人体的方法有哪些?如何默写好画人体?
- failover机制
- dubbo comsumer指定服务
- Nginx之正则表达式、location匹配简介以及rewrite重写
- 移动 app安全评估检测技术分析
- Unity Shader学习:水墨效果
- 华为写代码的这13年,成为了我最宝贵的人生历程
- 通过,aria-describedby属性,获取元素,并设置样式
热门文章
- 软件版本的GA、RC的具体含义
- TeaVM编译JAVA感想:看着简单,做起来真难
- undefined reference to `swr_init+
- LINUX:安装下载源码用的hg
- 桌面魔术可以用透明桌子揭密
- C#中IPAddress与域名的使用
- h文件中报错 unterminated conditional directive的原因
- html flash rtmp,Web直播之RTMP协议:vue-video-player + videojs-flash
- html5控制字大小的代码,js根据字符串长度控制字体大小代码
- 单机rust怎么设置白天_安卓单机游戏评测:侠盗猎车手3十周年版本