Hallo,
Ich will von einer Struture die Prüfsumme bilden.
Dazu habe ich folgenden Code implentiert:
Ich bilde von der sizeof() MEINER_STRUCT die Prüfsumme
unsigned int x = sizeof(MEINE_STRUCT);
Bin selbst der Meinung das das so nicht funktionieren kann, oder?
Richtig wäre es über jedes Byte der Structur die Prüfsumme zu bilden?
Lese mich gerade erst in das Thema ein und bin überfragt. Kann bitte jemand mal den Ablauf beschreiben wie ich das löse?
Danke
edit:
Am Ende soll mittels CRC32 geprüft werden, ob die Strucur A mit einer anderen aus dem selben Programm erstellten Structur B übereinstimmt.
Ich will von einer Struture die Prüfsumme bilden.
Dazu habe ich folgenden Code implentiert:
Code:
unsigned long reg32 = 0xffffffff; // Schieberegister
unsigned long crc32_bytecalc(unsigned char byte)
{
int i;
unsigned long polynom = 0xEDB88320; // Generatorpolynom
for (i=0; i<8; ++i)
{
if ((reg32&1) != (byte&1))
reg32 = (reg32>>1)^polynom;
else
reg32 >>= 1;
byte >>= 1;
}
return reg32 ^ 0xffffffff; // inverses Ergebnis, MSB zuerst
}
unsigned long crc32_messagecalc(unsigned char *data, int len)
{
int i;
for(i=0; i<len; i++)
{
crc32_bytecalc(data[i]); // Berechne fuer jeweils 8 Bit der Nachricht
}
return reg32 ^ 0xffffffff;
}
int _tmain(int argc, _TCHAR* argv[])
{
unsigned int x = sizeof(MEINE_STRUCT);
unsigned char data1[] = {x};
unsigned long crc32;
reg32 = 0xffffffff; // Initialisiere Shift-Register mit Startwert
crc32 = crc32_messagecalc(data1,9);
printf("1: CRC32 = %lx\n",crc32);
return 0;
}
Ich bilde von der sizeof() MEINER_STRUCT die Prüfsumme
unsigned int x = sizeof(MEINE_STRUCT);
Bin selbst der Meinung das das so nicht funktionieren kann, oder?
Richtig wäre es über jedes Byte der Structur die Prüfsumme zu bilden?
Lese mich gerade erst in das Thema ein und bin überfragt. Kann bitte jemand mal den Ablauf beschreiben wie ich das löse?
Danke
edit:
Am Ende soll mittels CRC32 geprüft werden, ob die Strucur A mit einer anderen aus dem selben Programm erstellten Structur B übereinstimmt.
Zuletzt bearbeitet: