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()实际运行如下: