Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

c-programm- crc32 berechnung von manufacturing infos

Nobody666 / 10 Antworten / Flachansicht Nickles

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;
}

bei Antwort benachrichtigen
Nobody666 Nachtrag zu: „c-programm- crc32 berechnung von manufacturing infos“
Optionen

@ mr.escape: DANKE!!!

Hab jetzt aber wieder ein anderes Problem.
Will die Daten, die ich in der obigen Funktion berechnen will in einer Datei. Diese is im Hex Format (140 Hex Zahlen also). Diese will ich von der Datei einlesen und berechnen. Funktioniert aber nicht so wie ich will. Funktion fgetc liest mir immer nur 1 Zeichen ein und wandelt in int um, kann ich aber so nicht brauchen, hab schon in Literatur und Netz geschaut, aber nichts für mein Problem gefunden. Muß dann verschiedene Hex Werte mit Werten aus einer anderen Datei überschreiben, deswegen hab ich mir das mit den Vektoren gedacht, einfach die Hexwerte in Vektoren speichern, mit Werten aus der anderen Datei überschreiben und dann die Berechnung durchführen. Aber wie gesagt, funktioniert nicht. Wer kann BITTE helfen!!!!!!
Anbei das was ich mir schon ausgedacht habe (nicht viel, aber ich komm einfach nicht weiter):
int main ()
{
FILE *werte;
char Infos_ohne_Mac [140];

if ( (werte = fopen("C:\\test.txt","rb"))==NULL) //Pointer auf Datei wird in werte gespeichert
{
printf("error opening file C:\\test.txt\n");
exit (1);
}
else
{
for (int i=0; !feof(werte); i++)
{
Infos_ohne_Mac [i] = fgetc(werte);
}
}
fclose(werte);


printf("Der 2. Wert ist: %i\n",Infos_ohne_Mac[1]);

bei Antwort benachrichtigen