2012-10-23 2 views
2

여러 가비지와 함께 여러 개의 jpeg 데이터를 포함하는 파일이 있는데이 파일에서 이진 파일을 추출하고 가비지를 필터링하고 jpeg를 만들어야합니다. jpeg의 시작 바이너리 시퀀스를 알고 있습니다.C에서 이진 배열로 파일 읽기

char buffer[30]; 
ifstream fin; 
fin.open ("FILENAME.raw", ios::in | ios::binary); 
while (!fin.eof()) 
{ 
    fin.read(buffer,30); 
    cout<<buffer[2]<<endl; 
} 
fin.close(); 

이 파일을 이진 형식으로 인쇄하려고하는데이 코드를 실행하면 외계 문자가 화면에 인쇄됩니다.

+1

아마 외계인 문자가 파일에 있습니다. 일반적으로 바이너리 데이터의 경우입니다. – john

+0

파일 자체의 내용은 무엇입니까? – M4rc

+6

모든 것이 잘되고 문제가없는 것 같습니다. 그리고 사실 당신은 질문하지 않았습니다. – Zane

답변

2

나는이 문제를 charecters로 변환하는 "cout < < buffer [2]"문제가 있다고 생각합니다. 또한

unsigned char buffer[ 30 ]; 
ifstream fin; 
fin.open ("FILENAME.raw", ios::in | ios::binary); 
while (!fin.eof()) 
{ 

    fin.read((char*)(&buffer[0]), 30) ; 
    cout << (int)buffer[2] << " "; 
} 
fin.close(); 
return 0; 

당신이 왜 그냥 버퍼 [인쇄 된 바이너리를 통과 할 경우 : 서명되지 않은 저놈이 작동 이진 데이터가 될 수 있기 때문에 또한 을 정적 "서명되지 않은 char 배열"을 사용한다 전에 INT 캐스트를보십시오 2].

1

코드가 완벽하게 잘되어 있으므로 파일의 이진 내용을 다시 확인해야합니다.