是否有可能validationIMEI号码?

对于移动商店应用程序,我需要validationIMEI号码 。 我知道如何基于输入长度进行validation,但是他们是否还有其他任何validation输入数字的机制? 有没有可以实现这一目标的内置function?

任何语言的逻辑都被接受和赞赏。

搜索表明没有内置函数可以validationIMEI号,但是有一种使用Luhn算法的validation方法。

一般过程:

  1. 输入IMEI: 490154203237518
  2. 取下最后一位数字,记住它: 490154203237518 。 最后一个数字8是validation数字。
  3. IMEI中每两位数加倍: 4 18 0 2 5 8 2 0 3 4 3 14 5 2 (不包括validation数字)
  4. 将此数字分成单个数字: 4 1 8 0 2 5 8 2 0 3 4 3 1 4 5 2 (注意1814已分开)。
  5. 加起来所有数字: 4+1+8+0+2+5+8+2+0+3+4+3+1+4+5+2 = 52
  6. 取出你得到的数字,记住它,并将其四舍五入到最接近的十: 60
  7. 从舍入的数字中减去原始数字: 60 - 52 = 8
  8. 将结果与原始validation数字进行比较。 如果两个数字匹配,则您的IMEI有效。

上面步骤1中给出的IMEI是有效的,因为步骤#7中找到的数字是8,它与validation数字匹配。

我不相信有任何内置的方法来validationIMEI号码。 您需要针对第三方数据库进行validation(谷歌搜索表明有许多此类服务,但可能他们也从更集中的来源获取信息)。

我认为这个逻辑是不对的,因为这只适用于特定的IMEI no – 490154203237518而不适用于其他IMEI没有…我也实现了代码……

 var number = 490154203237518; var array1 = new Array(); var array2 = new Array(); var specialno = 0 ; var sum = 0 ; var finalsum = 0; var cast = number.toString(10).split(''); var finalnumber = ''; if(cast.length == 15){ for(var i=0,n = cast.length; i 

根据Karl Nicoll 先前的回答 ,我在Java中创建了这个方法。

 public static int validateImei(String imei) { //si la longitud del imei es distinta de 15 es invalido if (imei.length() != 15) return CheckImei.SHORT_IMEI; //si el imei contiene letras es invalido if (!PhoneNumber.allNumbers(imei)) return CheckImei.MALFORMED_IMEI; //obtener el ultimo digito como numero int last = imei.charAt(14) - 48; //duplicar cada segundo digito //sumar cada uno de los digitos resultantes del nuevo imei int curr; int sum = 0; for (int i = 0; i < 14; i++) { curr = imei.charAt(i) - 48; if (i % 2 != 0) sum += duplicateAndSum(curr); else sum += curr; } //redondear al multiplo de 10 superior mas cercano int round = sum % 10 == 0 ? sum : ((sum / 10 + 1) * 10); return (round - sum == last) ? CheckImei.VALID_IMEI_NO_NETWORK : CheckImei.INVALID_IMEI; }