2010-03-25 11 views
5

के लिए जांचें क्या कोई जानता है कि वैध IMEI की जांच कैसे करें?मान्य IMEI

मैं इस पृष्ठ पर जाँच करने के लिए एक समारोह पाया है: http://www.dotnetfunda.com/articles/article597-imeivalidator-in-vbnet-.aspx

लेकिन यह वैध आईएमईआई के (उदा 352972024585360) के लिए false देता है। मैं उन्हें इस पृष्ठ पर ऑनलाइन सत्यापित कर सकता हूं: http://www.numberingplans.com/?page=analysis&sub=imeinr

किसी दिए गए IMEI मान्य होने पर सही तरीका (VB.Net में) क्या है?

पुनश्च:

Public Shared Function isImeiValid(ByVal IMEI As String) As Boolean 
    Dim cnt As Integer = 0 
    Dim nw As String = String.Empty 
    Try 
     For Each c As Char In IMEI 
      cnt += 1 
      If cnt Mod 2 <> 0 Then 
       nw += c 
      Else 
       Dim d As Integer = Integer.Parse(c) * 2 ' Every Second Digit has to be Doubled ' 
       nw += d.ToString() ' Genegrated a new number with doubled digits ' 
      End If 
     Next 
     Dim tot As Integer = 0 
     For Each ch As Char In nw.Remove(nw.Length - 1, 1) 
      tot += Integer.Parse(ch) ' Adding all digits together ' 
     Next 
     Dim chDigit As Integer = 10 - (tot Mod 10) ' Finding the Check Digit my Finding the Remainder of the sum and subtracting it from 10 ' 
     If chDigit = Integer.Parse(IMEI(IMEI.Length - 1)) Then ' Checking the Check Digit with the last digit of the Given IMEI code ' 
      Return True 
     Else 
      Return False 
     End If 
    Catch ex As Exception 
     Return False 
    End Try 
End Function 

संपादित: पेज ऊपर से यह कार्य किसी तरह से गलत होना चाहिए

Public Shared Function checkIMEI(ByRef IMEI As String) As Boolean 
    Const allowed As String = "" 

    Dim cleanNumber As New System.Text.StringBuilder 
    For i As Int32 = 0 To IMEI.Length - 1 
     If (allowed.IndexOf(IMEI.Substring(i, 1)) >= 0) Then 
      cleanNumber.Append(IMEI.Substring(i, 1)) 
     End If 
    Next 

    If cleanNumber.Length <> 15 Then 
     Return False 
    Else 
     IMEI = cleanNumber.ToString 
    End If 

    For i As Int32 = cleanNumber.Length + 1 To 16 
     cleanNumber.Insert(0, "0") 
    Next 

    Dim multiplier As Int32, digit As Int32, sum As Int32, total As Int32 = 0 
    Dim number As String = cleanNumber.ToString() 

    For i As Int32 = 1 To 16 
     multiplier = 1 + (i Mod 2) 
     digit = Int32.Parse(number.Substring(i - 1, 1)) 
     sum = digit * multiplier 
     If (sum > 9) Then 
      sum -= 9 
     End If 
     total += sum 
    Next 

    Return (total Mod 10 = 0) 
End Function 
+0

मुझे एक ही समस्या है! एक नए फोन के बॉक्स पर स्कैन किए गए आईएमईआई नंबरों को मेरे वीबीए वैधकर्ता दिनचर्या (वीबी के लिए विकिपीडिया लिंक से लिया गया) और आपके dotnetfunda.com पृष्ठ से इनकार कर दिया गया है। क्या आपके पास इस बारे में कोई खबर है? –

+0

मैंने अपना प्रश्न संपादित किया है और मेरा समाधान जोड़ा है। –

उत्तर

9

IMEI नंबर हैं: यह मेरा काम कर "checkIMEI" समारोह है Luhn एल्गोरिदम का उपयोग करके मान्य। लिंक किए गए पृष्ठ में विभिन्न भाषाओं में कार्यान्वयन हैं।

+0

संकेत के लिए धन्यवाद। –

संबंधित मुद्दे