IMEI校验位计算-基于python3

混江龙づ霸主 提交于 2019-12-01 22:02:32

IMEI是国际移动通讯设备识别号(International Mobile Equipment Identity)的缩写,用于GSM系统。

由15位数字组成,前6位(TAC)是型号核准号码,代表手机类型。接着2位(FAC)是最后装配号,代表产地。后6位(SNR)是串号,代表生产顺序号。最后1位(SP)是检验码。
————————————————

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
————————————————

#!/usr/bin/python3def getlastbit():    imei_str = input("input imei:")    if 14 != len(imei_str):        print("ERROR!Please input 14 bit IMEI!")    elif imei_str.isnumeric():        i = 0        sum1 = 0        for var in imei_str:            # print(type(var))            var_int = int(var)            # print(type(var_int))            if 0 == i % 2:                ge = var_int * 2 % 10                sum1 = sum1 + ge + (var_int * 2 - ge) / 10            else:                sum1 = sum1 + var_int        bit = 0        if 0 == sum1 % 10:            bit = 0        elif sum1 > 100:            bit = 10 - sum1 % 100 % 10        else:            bit = 10 - sum1 % 10        print("The full IMEI is:" + imei_str + str(int(bit)))    else:        print("ERROR!!!Please input number type!!!")# start to findif __name__ == '__main__':    getlastbit()实际运行如下:

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!