[PEDIDO] Programa o Script para web

Calcular el ultimo digito del imei

« Older   Newer »
 
  Share  
.
  1. WeBoXGT
        +1   -1
     
    .

    User deleted


    Quiero implementar esto en una pagina, alguien podria pasarme el script?


    Gracias...
     
    Top
    .
  2. WeBoXGT
        +1   -1
     
    .

    User deleted


    alguien?
     
    Top
    .
  3. josedavido
        +2   +1   -1
     
    .

    User deleted


    La instrucción de cómo calcularlo está aquí:
    http://forum.gsmhosting.com/vbb/199363-post7.html

    -----------------------------------------------

    Funciones ya terminadas

    -----------------------------------------------


    Java script:

    CODE
    }

       function validateIMEI(e, obj) {
           maxlength = 14; // Cantidad maxima de caracteres = 15 (La funcion valida_longitud valida maxlenght + 1)
           return NumericValidation(e, obj) && valida_longitud(maxlength, obj.id);
       }




    Visual Basic 6


    CODE
    Public Function getIMEIsum(byVal sInput as string) As string
    Dim bIMEI(14) As Byte
    Dim sum1 As Byte
    Dim sum2 As Byte
    Dim SumOut As Byte
    Dim buffer$

    For i = 14 To 1 Step -1
    bIMEI(i) = Mid(sInput , i, 1)
    Next i

    For i = 14 To 2 Step -2
    If (bIMEI(i) * 2) >= 10 Then
    buffer$ = LTrim(Str(bIMEI(i) * 2))
    sum1 = sum1 + Val(Mid(buffer$, 1, 1)) + Val(Mid(buffer$, 2, 1))
    Else
    sum1 = sum1 + (bIMEI(i) * 2)
    End If
    Next i

    For i = 13 To 1 Step -2
    sum2 = sum2 + bIMEI(i)
    Next i

    SumOut = sum1 + sum2

    If SumOut Mod 10 = 0 Then
    getIMEIsum = sInput & "0"
    Else
    getIMEIsumt = sInput & CStr((10 - SumOut Mod 10))
    End If
    End Function




    Visual Basic 6 opción 2

    CODE
    Function Checksum(IMEI)
    On Error Resume Next
    Table = Array(Array(0, 8, 6, 4, 2, 9, 7, 5, 3, 1), Array(0, 9, 8, 7, 6, 5, 4, 3, 2, 1))
    Position = 1
    For I = 1 To 14
    Checksum = Checksum + Table(Position)(Mid(IMEI, I, 1))
    If Position = 1 Then
    Position = 0
    Else
    Position = 1
    End If
    Next I
    Do While Checksum >= 10
    Checksum = Checksum - 10
    Loop
    End Function



    Delphi

    CODE
    type
    T_Imei = array[0..14] of byte;

    Procedure CalcImeiCS(FullImei: T_Imei; var CS: byte);
    var
    i, summ: byte;
    Begin
    summ :=0;
    for i:= 14 downto 1 do
    if not odd(i)
    then summ := summ + FullImei[i]
    else Begin
    if ((FullIMEI[i] * 2) > 9)
    then summ := summ + ((FullImei[i] * 2) mod 10) + 1
    else summ := summ + FullImei[i] * 2;
    End;

    summ := (60 - summ);
    while summ >=10 do
    summ:= summ - 10;

    CS := summ;
    End;




    C++


    CODE
    #include <iostream.h>

    int sumadigitos(int numero); //function

    main()
    {

    //a[15] contains 14 digits of IMEI and a[0] = 0
    //b[16]= a[15] contains 15 digits of IMEI, the last digit (CHK) will be saved
    // in b[15]

    int a[15]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4};
    int b[16]={0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,0};
    int suma=0,j,temp,CHK;


     b[16]=0;                

    for(j=1;j<=14;j++)
    {
                     
     if(j%2==0)
     {
      a[j]=a[j]*2;
      suma+=sumadigitos(a[j]);
     }

     else
     {  
     suma+=a[j];
      }
    }

    temp=suma%10;
    suma=suma;

    if(temp==0)
    {
    CHK=0;     //LAST DIGIT      
    }

    else
    {
    CHK=(suma/10)+1;  
    }

    b[15]=CHK;   //LAST DIGIT

    for(j=1;j<=15;j++)
    {
    cout<<b[j];  //I print the 15 digits IMEI              
    }

    system("PAUSE");

    }

    //A tiny function for calc the sum between two digits of a number :D

    int sumadigitos(int numero)
    {
    int resultado;  
    if((numero/10)>=1)
    {  
     resultado=(numero%10)+(numero/10);
     }

    else
    {
     resultado=numero;  
     }    
     
    return resultado;  
    }



    PHP

    CODE
    function CalcCheckIMEI( $IMEI )
    {
           $cs = 0;
           for( $i = 0; $i < 14; $i += 2 )
           {
                   $dodd = $IMEI[ $i + 1 ] << 1;
                   $cs += $IMEI[ $i ] + (int)( $dodd / 10 ) + ( $dodd % 10 );
           }
           $cs = ( 10 - ( $cs % 10 )) % 10;

           return $cs;
    }





    espero haberte ayudado amigo.




    Br,
    Josedavido
     
    Top
    .
  4. WeBoXGT
        +1   -1
     
    .

    User deleted


    GRacias :)
     
    Top
    .
3 replies since 4/11/2011, 00:25   184 views
  Share  
.