• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Luhn algoritması ile IMEI kontrolü

  • Konbuyu başlatan Konbuyu başlatan QNURi
  • Başlangıç tarihi Başlangıç tarihi
Katılım
10 Eylül 2005
Mesajlar
97
Merhaba değerli arkadaşlar,

Cep telefonlarında kullanılan IMEI numaralarının kontrolü için bir form oluşturmak istiyorum.
IMEI kodu nasıl hesaplanır önce ona bakalım.

49015420323751? IMEI numarasının soru işareti gelecek kısmını nasıl buluyoruz.

1. Önce tüm basamakları ayıralım
2. İlk rakam çarpı 1, ikinci çarpı 2 (Bir boş bir dolu) hesaplayalım
3. Tüm rakamları toplayalım.
4. Toplam rakım, 10'un katları olan bir üst seviyeden çıkaralım. Kalan bize kontrol numarasını verir. Örnekte 60 - 52 = 8 şeklinde

ÖRNEK=>

IMEI 4 9 0 1 5 4 2 0 3 2 3 7 5 1 ?
KODLAMA 4 (18) 0 (2) 5 (8) 2 (0) 3 (4) 3 (14) 5 (2) ?
TOPLAM 4 + (1 + 8) + 0 + 2 + 5 + 8 + 2 + 0 + 3 + 4 + 3 + (1 + 4) + 5 + 2 + ? = 52 + ?

Şimdi arkadaşlar, excelde iki sütunumuz var. İlk sütunda 49015420323751? bigi kontrol kodu bilinmeyen numaralar var. Diğer sütunda ise sonuçları görüyoruz. İşte basit sorumuz bundan ibaret :)

Bir seferde binlerce numarayı kontrol edebileceğimiz bir yapı oluşturmalıyız. Aksi halde her seferinde numara yazıp hesaplama yapmak çoooook uzun bir uğraş olur.

Tüm uzmanlarımın ellerinden öperim. (Örnek ektedir.)
 

Ekli dosyalar

Yabanci bir sitede şu kodu buldum. Excel içinde ama nasıl uygularım bilmiyorum
___________________________________________________________________

'This is the Luhn Formula as described in ISO/IEC 7812-1:1993.
'Its primary purpose is to ensure accurate entries of the credit card number
'during transactions. You can apply the same technique to other applications
'such as employee numbers or patient numbers. Using check digits for these
'numbers also ensures more accurate data entries.

Public Function CheckDigit(strNum As String) As Integer

Dim i As Integer
Dim iEven As Integer
Dim iOdd As Integer
Dim iTotal As Integer
Dim strOneChar As String
Dim iTemp As Integer

' Add digits in even ordinal positions
' starting from rightmost
For i = Len(strNum) - 1 To 2 Step -2

strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
iEven = iEven + CInt(strOneChar)
End If
Next i

' Process digits in odd ordinal positions
' starting from rightmost
For i = Len(strNum) To 1 Step -2
strOneChar = Mid$(strNum, i, 1)
If IsNumeric(strOneChar) Then
' Double it
iTemp = CInt(strOneChar) * 2
If iTemp > 9 Then
' Break the digits (e.g., 19 becomes 1+9)
iOdd = iOdd + (iTemp \ 10) + (iTemp - 10)
Else
iOdd = iOdd + iTemp
End If
End If
Next i

' Add even and odd
iTotal = iEven + iOdd

' Return the 10's complement
CheckDigit = 10 - (iTotal Mod 10)

End Function
 
Merhaba,

Verdiğiniz örnek ile bulduğunuz fonksiyon 2 döndürüyor.. Doğru olan "8" mi?
 
Merhaba,

Verdiğiniz örnek ile bulduğunuz fonksiyon 2 döndürüyor.. Doğru olan "8" mi?

Evet doğru cevap 8 olmalı
(60-52=8)

Bulduğum kodun ne anlama geldiğini bilmiyorum. O sanırın 15 digit'in doğruluk kontrolünü yapıyor. Ben ise 14 digit yazacağım. bana 15 digit sonuç verecek.
 
Konuya mesaj yazılınca, (ve benim de şu an canım sıkılırken) alternatif olsun diye bir uğraşayım dedim, aşağıdaki kodlama çıktı.

Ek'li dosyada, Sayın dentex'in kodları da vardır. Belki yardımcı olur düşüncesi ile yazdığım kodlamanın açıklamasını da yapmaya çalıştık. Dilerim faydası olur.
 

Ekli dosyalar

Son düzenleme:
İndirmek istediğinizde gelen sayfayı zahmet edip okursanız; indirememenizin sebeplerini öğrenebilirsiniz.
 
Merhaba değerli arkadaşlar,

Cep telefonlarında kullanılan IMEI numaralarının kontrolü için bir form oluşturmak istiyorum.
IMEI kodu nasıl hesaplanır önce ona bakalım.

49015420323751? IMEI numarasının soru işareti gelecek kısmını nasıl buluyoruz.

1. Önce tüm basamakları ayıralım
2. İlk rakam çarpı 1, ikinci çarpı 2 (Bir boş bir dolu) hesaplayalım
3. Tüm rakamları toplayalım.
4. Toplam rakım, 10'un katları olan bir üst seviyeden çıkaralım. Kalan bize kontrol numarasını verir. Örnekte 60 - 52 = 8 şeklinde

ÖRNEK=>

IMEI 4 9 0 1 5 4 2 0 3 2 3 7 5 1 ?
KODLAMA 4 (18) 0 (2) 5 (8) 2 (0) 3 (4) 3 (14) 5 (2) ?
TOPLAM 4 + (1 + 8) + 0 + 2 + 5 + 8 + 2 + 0 + 3 + 4 + 3 + (1 + 4) + 5 + 2 + ? = 52 + ?

Şimdi arkadaşlar, excelde iki sütunumuz var. İlk sütunda 49015420323751? bigi kontrol kodu bilinmeyen numaralar var. Diğer sütunda ise sonuçları görüyoruz. İşte basit sorumuz bundan ibaret :)

Bir seferde binlerce numarayı kontrol edebileceğimiz bir yapı oluşturmalıyız. Aksi halde her seferinde numara yazıp hesaplama yapmak çoooook uzun bir uğraş olur.

Tüm uzmanlarımın ellerinden öperim. (Örnek ektedir.)
IMEI Luhn excel tablosuna ihtiyacım var acaba yardımcı olur musunuz? ersen@lte.com.tr adresine atarsanız memnun olurum?
 
Geri
Üst