Jim LaVine 0 Newbie Poster

I am trying to write a simple CRC calculator in VB6 I am converting a C code(listed below) I need to use a bitwise & operator. I have read that the Imp operator is what I should use, but it does not give the correct results
Here is the code with the Imp operator

Private Sub cmdCalculate_Click()


Dim str As String
Dim strLength As Long, ptrLengthField As Long
Dim ptr As Long
Dim i As Integer, j As Integer, c As Variant, crc As Long
crc = 0



strLength = Len(txtInputString.Text)
str = txtInputString.Text


For i = 1 To strLength
c = Val("&H" & Mid(str, i, 1)) And 255  'convert Hex characters to integers


For j = 0 To 8
If crc And 32768 Then
crc = crc * 2   'bitshift left
crc = crc + (((c * 2) Imp &H100) <> 0) ' bitshift left then bitwise and &H100
crc = crc Xor 4129
Else
crc = crc * 2
crc = crc + (((c * 2) Imp &H100) <> 0)
End If
Next


Next



lblCRC = Hex(crc)


End Sub

This is the C Code I'm trying to convert

//
// CRC Calculation & Checking routines for Kingfisher Protocol
//
unsigned int kf_crc_calc(BYTE *string, int charnum)
{
int i, j;
int c, crc = 0;
for (i=0; i<charnum; i++)
{ c = string & 0xff;
for (j=0; j<8; j++)
{ if (crc & 0x8000)
{ crc <<= 1;
crc += (((c <<= 1) & 0x100) != 0);
crc ^= 0x1021;
}
else
{ crc <<= 1;
crc += (((c <<= 1) & 0x100) != 0);
}
}
}
return(crc);
}
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.