2011-06-18 9 views
-2

からバイナリバイトを読んで、私はC言語でJPGファイルからバイトを読み取るために必要++ので、このコードを書く:がjpgファイル

ifstream in("1.jpg"ios::binary); 
    while(!in.eof()) 
{ 
char ch = in.get(); 
} 

あなたはJPGファイルを知っているように256の違いから構成され、我々はそれを繰り返します保存することができますことを文字aa arr.しかし、問題は、私が書いたこのコードはユニコードの形式でcharsを読み取るので、それは9256の違いchar.howから構成されています。これはユニコードではないことを1.jpgから読み取ることができますか?

+1

.jpegには、文字ではなくバイトが含まれています。 in.get()の戻り値を(unsigned char)にキャストします。 –

+0

あなたのヒント –

答えて

2

get関数は、書式化されていないデータをファイルから読み込み、読み取ったcharをキャストします。intです。ファイルから読み取ったデータがファイル内の実際のデータと異なっているのを見ていますか?あなたがいる場合は、コードのどこかに問題がある可能性があります。

また、readを使用して、フォーマットされていないデータのチャンクを読み取ることもできます。

int main() 
{ 
    std::ifstream in("1.jpg", std::ios::binary); 

    char buffer[1024]; 

    while (in) 
    { 
     in.read(buffer, sizeof(buffer)); 

     if (in.gcount() > 0) 
     { 
      // read in.gcount() chars from the file 
      // process them here. 
     } 
    } 
} 
関連する問題