O erro que você está enfrentando no Visual Studio 2013 ao tentar usar essa função em VB.NET provavelmente está relacionado à conversão de tipos e manipulação de bytes. Aqui está a função convertida para VB.NET:
Function crc_ccitt_ffff(strParam As String) As String
Const CRC_POLY_CCITT As Integer = &H1021
Const CRC_START_CCITT_FFFF As Integer = &HFFFF
Dim crc As Integer = CRC_START_CCITT_FFFF
Dim crc_tabccitt(255) As Integer
Dim i As Integer, j As Integer
For i = 0 To 255
crc = 0
Dim c As Integer = i * 256
For j = 0 To 7
If ((crc Xor c) And 32768) Then
crc = (crc * 2) Xor CRC_POLY_CCITT
Else
crc = crc * 2
End If
c = c * 2
Next
crc_tabccitt(i) = crc
Next
Dim bytes As Byte() = System.Text.Encoding.ASCII.GetBytes(strParam)
For i = 0 To bytes.Length - 1 Step 2
crc = (crc * 256) Xor crc_tabccitt(((crc \ 256) Xor bytes(i)) And 255)
crc = ((crc \ 65536) * 65536) Xor crc
Next
Return crc.ToString("X")
End Function
Agora, essa função de código escrita pelo meu colega com
penalty shoot out está em VB.NET e deve funcionar corretamente no Visual Studio 2013. Certifique-se de usar o mesmo tipo de projeto (Windows Forms, aplicativo de console, etc.) para evitar problemas de contexto de código.