2016-08-12 4 views

答えて

0

画像コードの開始は、FFD8で、何かのように:

#include <stdio.h> 
#include <string.h> 

int main(void) 
{ 
    unsigned char seq[] = {0x01, 0x02, 0xFF, 0xD8, 'S', 'O', 'I', 0x00}; 
    unsigned char *res = seq; 

    /* We can not use strstr because seq is not a valid string */ 
    while ((res = memchr(res, 0xFF, sizeof seq - (res - seq)))) { 
     if (*(++res) == 0xD8) { 
      res++; /* + 1 to consume 0xD8 */ 
      break; 
     } 
    } 
    if (res != NULL) { 
     printf("%s\n", res); 
    } 
    return 0; 
} 

出力:

SOI 
0

jpeg形式で任意のマーカーヘッダーの前に開始マーカー0xFFがあり、soiマーカーは0xD8です。
値が0xFFのバイトを見つけて、次のバイトが0xD8かどうかを確認するまで、データを繰り返し処理できます。おめでとう、あなたは今すぐソイマーカーを見つけました。

関連する問題