Hilfe!!! Anbei hab ich ein C-Programm, welches von manufacturing daten die checksumme in crc32 berechnen soll.
1. kann mir jemand sagen was:
*((u32 *)&Manufactureing_Info [MANUFACTURING_INFO_SIZE -4]) = chksum bedeuten soll?
2. beim ausführen kommt Fehlermeldung:
undefined reference to `util_gen_crc'
3. wo und wie übergebe ich die daten?
Vielen Dank schon mal im voraus!!!!!!!
#include <stdio.h>
#include <math.h>
typedef unsigned long u32;
#define MANUFACTURING_INFO_SIZE 140
#define CRC32_POLYNOMIAL 0xEDB88320
char Manufactureing_Info [MANUFACTURING_INFO_SIZE] = "43";
int main ()
{
u32 chksum;
chksum = ~ util_gen_crc (Manufactureing_Info, MANUFACTURING_INFO_SIZE -4, 0xffffffff);
*((u32 *)&Manufactureing_Info [MANUFACTURING_INFO_SIZE -4]) = chksum;
printf("Die checksumme ist: %08lx",chksum);
}
u32 util_gen_crc (char *pcDatabuf, u32 ulDatalen, u32 ulCrc_in)
{
u32 idx, bit, data, crc;
crc = ulCrc_in;
for (idx = 0; idx < ulDatalen; idx++)
{
data = *pcDatabuf++;
for (bit = 0; bit < 8; bit++, data >>=1)
{
crc = (crc >> 1) ^ (((crc ^ data) & 1) ? CRC32_POLYNOMIAL : 0);
}
}
return crc;
}