Aquí esty yo, yo os lo puedo traducir de VB a español, vosotros ocuparos de pasarlo a C.
Function CRC32(ByRef trama As String) As String ' esta función devuelve un valor de cadena de texto, y requiere una entrada de cadena de texto, llamada trama y también del tipo cadena de texto
Dim dwCrc32 As Long 'Declara la variable dwCrc32 como número de tipo long
Dim i As Long ' Declara la variable i como número de tipo long
dwCrc32 = &HFFFFFFFF 'Le carga a dwCrc32 el valor hexadecimal FFFFFFFF
Dim j As Integer, h As Integer ' define j e i como número enteros
For j = 1 To Len(trama) ' inicia un bucle1 que acaba cuando j,tras cargar el valor 1,e incrementando de uno en uno, adquiere el valor de la langitud de la variable trama
'recorremos la trama byte a byte
i = CLng(Asc(Mid(trama, j, 1))) Xor ((dwCrc32) And &HFF&)'carga en i la conversión a un dato long de ((Codigo ascii (tipo entero)del caracter situado en la posción j de la cadena trama)Xoreado con (la variable dwCrc32 y el valor hexadecimal FF(las veces necesarias para completar la longitud de la cadena) [Esos parentesis]
For h = 1 To 8' inicia un bucle2 que acaba cuando h,tras cargar el valor 1,e incrementando de uno en uno, adquiere el valor 8
If (i And 1) Then ' si la variable i Y(logico) 1 es verdadero,
i = ((i And &HFFFFFFFE) / 2) Xor &HEDB88320 'iCarga el valor de ((i Y(lógico) valor hexadecimal(FFFFFFFE))entre 2)oexclusivo(lógico) con el valor hexadecimal (HEDB88320) [atento a los paréntesis]
Else 'Sino,
i = (i And CLng(&HFFFFFFFE)) / 2 'carga en i el valor de (i y el valor Long correspondiente a el hexadecimal FFFFFFFE) /2
End If 'Fin del bloque if
Next h ' fin del bucle 2
dwCrc32 = ((dwCrc32 And &HFFFFFF00) / (2 ^ ) Xor i 'carga en dwCrc32 (el valor de dwCrc32 Y(lógico) el valor hexadecimal(FFFFFF00) entre dos, y luego lo Xorea con la variable i
Next j 'Fin del bucle 1
'convertimos a representación hexadecimal con 8 digitos
Dim repHex As String ' declara el valor repHex, como un valor de tipo cadena de caracteres
repHex = Hex$(dwCrc32) 'Carga en repHex la cadena Hexadecimal de la variable dwCrc32
If Len(repHex) = 8 Then 'Comprueba que la longitud de la cadena rep Hex, sea 8
CRC32 = repHex 'Si lo es, otorga a la variable CRC32 el valor de repHex
Else ' sino,
'Colocamos símbolos "0" al principio de la cadena
CRC32 = String$(8 - Len(repHex), "0") & repHex' Hace CRC32 como el string rephex, pero con los ceros necesarios delante para que tenga una longitud de 8 carácteres
End If ' fin del bloque if
End Function 'fin de la función
Esta función obtiene el CRC32 de una cadena de carácteres.
Tras el simbolo ' esta la explicación de cada linea.
Una cosa, se agradecería un foro de Visual Basic..