Hallo,
ich habe auf http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung einen Artikel dazu gefunden eine CRC32 Checksumme zu berechnen.
Mein Frame besitzt eine Größe von 77 Bytes ( ohne Präambel und SFD ) also vom Ziel - MAC bis zum Pad Feld.
Kann ich in das array datastream letztendlich einfach nur mein 77 großes Byte einlesen
-> int datastream[616]; ????
und dementsprechend auch die Variable int databits = 8; auf
-> int databits = 616; erhöhen? (77 * 8).
oder muss ich vorerst das Byte auseinander pflücken und Bitweise der Variable Datastream die Werte übergeben?
Mir ist leider nicht klar was genau die Berechnung in der For-Schleife macht?!
ich habe auf http://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung einen Artikel dazu gefunden eine CRC32 Checksumme zu berechnen.
Code:
#define CRC32POLY 0x04C11DB7 /* CRC-32 Polynom */
int datastream[] = {1,0,0,0,1,1,0,0};
int databits = 8;
uint32_t crc32 = 0; /* Schieberegister */
/*__int32 crc32 = 0; => für MS VS */
int main(void)
{
int i;
for (i = 0; i < databits; ++i)
if (((crc32 & 0x80000000) ? 1 : 0) != datastream[i])
crc32 = (crc32 << 1) ^ CRC32POLY;
else
crc32 <<= 1;
printf("0x%08X\n", crc32);
return EXIT_SUCCESS;
}
Mein Frame besitzt eine Größe von 77 Bytes ( ohne Präambel und SFD ) also vom Ziel - MAC bis zum Pad Feld.
Kann ich in das array datastream letztendlich einfach nur mein 77 großes Byte einlesen
-> int datastream[616]; ????
und dementsprechend auch die Variable int databits = 8; auf
-> int databits = 616; erhöhen? (77 * 8).
Ergänzung ()
oder muss ich vorerst das Byte auseinander pflücken und Bitweise der Variable Datastream die Werte übergeben?
Ergänzung ()
Mir ist leider nicht klar was genau die Berechnung in der For-Schleife macht?!
Zuletzt bearbeitet: