15位IMEI验证算法

 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,则最后位为7,所以完整是358901806972417


/// <summary>
        /// IMEI校验
        /// </summary>
        /// <param name="imei">IMEI</param>
        /// <returns></returns>
        private bool IMEICheck(string imei)
        {
            int sum1 = 0, sum2 = 0, temp = 0, total = 0, lastNum = 0;
            for (int i = 0; i < 14; i++)
            {
                if ((i % 2) == 0)
                {//奇数位
                    sum1 = sum1 + int.Parse(imei[i].ToString());
                }
                else
                {//偶数位
                    temp = (int.Parse(imei[i].ToString())) * 2;
                    if (temp < 10)
                    {
                        sum2 = sum2 + temp;
                    }
                    else
                    {
                        sum2 = sum2 + 1 + temp - 10;
                    }
                }  
            }
            total = sum1 + sum2;
            //获取个位数
            if ((total % 10) == 0)
            {
                lastNum = 0;
            }
            else
            {
                lastNum = total % 10;
            }

            //校验
            if ((10 - lastNum) != int.Parse(imei[14].ToString()))
                return false;
            else
                return true;
        }


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值