Hallo zusammen. Ich versuche, ein kleines Programm zu schreiben, das die vier folgenden Bytes nach dem letzten Vorkommen von "0xFF 0xC0 0x00 0x11" liest, die leicht in binär oder dezimal umgewandelt werden können. Der Zweck ist, dass die 2-5 Bytes nach dem letzten Vorkommen dieses Hex-Musters die Breite und Höhe einer JPEG-Datei darstellen.
#include <stdio.h>
int main () {
FILE * pFile;
long lSize;
char * buffer;
size_t result;
pFile = fopen ( "pano8sample.jpg" , "rb" );
if(pFile==NULL){
fputs ("File error",stderr);
exit (1);
}
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
printf("\n\nFile is %d bytes big\n\n", lSize);
buffer = (char*) malloc (sizeof(char)*lSize);
if(buffer == NULL){
fputs("Memory error",stderr);
exit (2);
}
result = fread (buffer,1,lSize,pFile);
if(result != lSize){
fputs("Reading error",stderr);
exit (3);
}
//0xFF 0xC0 0x00 0x11 (0x08)
//Logic to check for hex/binary/dec
fclose (pFile);
free (buffer);
return 0;
}
Das Problem ist, dass ich nicht weiß, wie man aus dem gepufferten Speicher rekursiv lesen und die zuletzt gelesene Variable als int zum Vergleich mit meiner binären/hex/dec verwenden.
Wie kann ich das tun?