ちょっと、そこ。簡単に 2 進数または 10 進数に変換できる "0xFF 0xC0 0x00 0x11" が最後に出現した後の 4 バイトを読み取る小さなプログラムを作成しようとしています。その目的は、その 16 進数パターンの最後の発生に続く 2 ~ 5 バイトが JPEG ファイルの幅と高さを表すことです。
#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;
}
問題は、バッファリングされたメモリから再帰的に読み取る方法がわからず、最近読み取った変数を int として使用してバイナリ/16 進数/10 進数と比較する方法がわからないことです。
どうすればいいですか?