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 1.18 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.