small help converting c++ to vb6
hi mates. i have this c++ code:
Code:
#include <string.h>
static unsigned char table1[ ][ 16 ] = {
{ 0x0C, 0x2D, 0x22, 0x43, 0x17, 0x02, 0x13, 0x0A, 0x0F, 0x63, 0x4C, 0x2D, 0x5B, 0x03, 0x37, 0x3B },
{ 0x05, 0x17, 0x43, 0x4C, 0x0C, 0x16, 0x4E, 0x13, 0x59, 0x32, 0x2B, 0x38, 0x56, 0x0B, 0x0F, 0x63 }
};
static unsigned int table2[ ][ 4 ] = {
{ 0x1E2D3E1F, 0xF5E6F798, 0x9E0D1DFF, 0x3E4D5A3E },
{ 0x7A8E9E0D, 0xB1E2D3A4, 0x5A6E7E8D, 0x9E0F2E3D }
};
static unsigned int table3[] = {
0x9E3779B9,
0x6F55A634
};
void Vitel_calc( char *imei, char type, char *code )
{
unsigned int x, y = 0;
unsigned int dest[ 8 ];
unsigned char IMEI[ 17 ];
int i, j;
strncpy( (char *)IMEI, imei, 14 );
IMEI[14] = '0';
IMEI[15] = '0';
IMEI[16] = 0;
For I = 0 To 7
DEST(I) = (TABLE1(Vitel_Type)(I Xor &HF) * (IMEI(&H10 - I) - &H30)) - ((IMEI(I) + IMEI(I Xor &HF)) Mod 9) + &H39
next I
for( i = 0; i < 8; i++ )
{
dest[ i ] = ( table1[ type ][ i ^ 0x0F ] * ( IMEI[ 0x10 - i ] - 0x30 )) - (( IMEI[ i ] + IMEI[ i ^ 0x0F ] ) % 9 ) + 0x39;
}
for( i = 0; i < 0x10; i++ )
y += IMEI[ i ];
for( i = 0; i < 8; i++ )
{
for( j = 0; j < 4; j++ )
{
x = table1[ type ][ ( i ^ 7 ) + j ];
dest[ i ^ 7 ] += (( x << 5 ) ^ ( x << 4 )) + table2[ type ][ j ^ 3 ];
}
dest[ i ^ 7 ] += ( y + table3[ type ] * ( i + 1 )) << 2;
}
for( i = 0; i < 8; i++ )
{
y = dest[ ( i + y ) % 6 ];
code[ i ] = (char)( 0x39 - ( y % 10 ));
}
code[ 8 ] = 0;
}
and i am trying to convert it to vb6
i already got this:
Code:
Private Sub Command1_Click()
Dim x, y, i, j, dest(8), Imei(21) As Integer
Dim Vitel_Type
Dim code(10) As Integer
For i = 0 To 15
Imei(i) = Val(Mid(Text2.Text, i + 1, 1)) + 48
Next i
y = 0
Imei(14) = 0
table1 = Array(Array(&HC, &H2D, &H22, &H43, &H17, &H2, &H13, &HA, &HF, &H63, &H4C, &H2D, &H5B, &H3, &H37, &H3B), Array(&H5, &H17, &H43, &H4C, &HC, &H16, &H4E, &H13, &H59, &H32, &H2B, &H38, &H56, &HB, &HF, &H63))
table2 = Array(Array(&H1E2D3E1F, &HF5E6F798, &H9E0D1DFF, &H3E4D5A3E), Array(&H7A8E9E0D, &HB1E2D3A4, &H5A6E7E8D, &H9E0F2E3D))
table3 = Array(&H9E3779B9, &H6F55A634)
Vitel_Type = Text1.Text
For i = 0 To 7
dest(i) = (table1(Vitel_Type)(i Xor &HF) * (Imei(&H10 - i) - &H30)) - ((Imei(i) + Imei(i Xor &HF)) Mod 9) '+ &H39
Next i
For i = 0 To &H10
y = y + Imei(i)
Next i
For i = 0 To 7
For j = 0 To 3
x = table1(Vitel_Type)((i Xor 7) + j)
dest(i Xor 7) = dest(i Xor 7) + (CInt(x / (2 ^ 5)) Xor CInt(x / (2 ^ 4)) + table2(Vitel_Type)(j Xor 3))
Next j
dest(i Xor 7) = (dest(i Xor 7) + (y + table3(Vitel_Type) * (i + 1))) / (2 ^ 2)
Next i
For i = 0 To 7
y = dest((i + y) Mod 6)
code(i) = y Mod 10
Next i
code(8) = 0
MsgBox code(0) + code(1) + code(2) + code(3) + code(4) + code(5) + code(6) + code(7) + code(8)
End Sub
but it is not working yet.
this was supposed to calculate a code.
for example:
if i enter the number
123456789012347
it should calculate me this 2 codes depending if i enter 0 or 1 in text1.text:
21477487
91315163
but i was not successfull to convert this.
i am waiting for your help. thanks in advance mates.