CRC-Routine aus Ansi C in C# umwandeln

12/06/2008 - 11:38 von Walter Sporn | Report spam
Hallo! Hab ein dringendes Problem und bin zu blöd, die Lösung zu finden...
Der folgende Code zur Berechnung einer CRC stammt von einem Kollegen in ANSI
C und ich muss ihn in C# verwenden, kann aber nicht alles umwandeln, weil
ich den genauen Hintergrund nicht verstehe.
Kann mir jemand helfen?

Vielen Dank!!!!!


#define CN_FEEDBACK 0x8408 // for CRC calculation
int Calc_Key_CRC (char *sData, int iLen, char *sResult)
{
int count, counti, j, k, l;
unsigned int hexbyte;
unsigned short crc = 0;

for (count=0; count < iLen; count++)
{
hexbyte = (*(sData+count)) & 0x00FF;
{
for (counti=0; counti<8; counti++)
/* step bitwise through given byte */
{
j=(hexbyte & 0x01);
k=(crc & 0x01);
if (j ^ k)
{
crc = (crc >> 1) ^ CN_FEEDBACK;
}
else
{
crc >>= 1;
}
hexbyte >>= 1;
}
}
}
sprintf(sResult,"%04x",crc);
/* convert to string */
for(l=0;l<4;l++)
{
if(islower(*(sResult+l))) (*(sResult+l)) -= 0x20;
/* convert to uppercase */
}
*(sResult+4) = 0;
return(crc);
}
 

Lesen sie die antworten

#1 Kerem Gümrükcü
12/06/2008 - 13:55 | Warnen spam
Hallo Walter,

ich habe mir mal deinen Code nicht angesehen, obwohl ich
sehr gut C/C++ programmieren kann, aber die Zeit ist bei
mir recht knapp. Wenn dein Problem so dringend ist, dann
empfehle ich Dir diesen Code zur Brechnung von CRC Summen:

http://forums.msdn.microsoft.com/en...a154dce015
http://www.icsharpcode.net/OpenSource/SharpZipLib/
http://www.vbaccelerator.com/home/n...rticle.asp
http://www.codeproject.com/KB/cs/ma...oding.aspx
http://damieng.com/blog/2006/08/08/..._C_and_NET
http://www.codeproject.com/KB/cs/cs...rithm.aspx


Kommt halt nur noch darauf an, welchen CRC du brauchst,
aber das stellt sich dann beim Abgleichen mit den Gegensummen
dar,...


Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen