|
128번째라니... 헤더포멧에는 없는 영역인것 같군요.
그냥 손쉽게
그 영역에 들어 있는 데이타가 double(8바이트) 에 준한 타잎이라면
double value;
FILE *fopen("test.avi", "rb"); // rb -> read binary (그냥 r만 하면 아스키로 읽어 똑같은 문제가)
fseek(fp, 128, SEEK_SET);
fread(&value, sizeof(value), 1, fp);
fclose(fp);
로 value에 받으시면 될테고,
그 안에 든 값이 아스키 형식이라면(그럴리야 없겠지만) char valuebuffer[8 + 1];
fread(valuebuffer, 8, 1, fp);
처럼 읽으시고
valuebuffer[8] = 0; 로 Termination 하시면 8바이트 문자열이 들어오겠죠.
그걸 정수로 바꾸시려면 int value = atoi(valuebuffer); 하시면 될꺼구요.
온새미 님이 쓰신 글 :
: 안녕하세요, 간만에 프로그램 짜봤더니 힘겨워서 이렇게 올리게 되네요 ㅎㅎ
:
: 제목처럼 제가 하려고 하는게 AVI 파일을 읽어들여서 HEX로 바꾼다는 것인데요, 메모장이나 기타 텍스트편집기 프로그램으로 AVI파일을 보게되면, 아래와 같이 펼쳐질겁니다.
:
: RIFFt? AVI LIST~" hdrlavih8 醫 ? LIST? strlstrh8 vidsxvid ? ? 嵋 ?strf( ( ? XVID? JUNK...
:
: 그런데, 여기에서 128번째 문자부터 135번째까지의 문자열값을 HEX로 변환하여 그 수치를 10진수로 바꿔서, 계산을 하고자 하는게 본 목적인데요, 제가 선택한 방법은 두가지 입니다. 하나는 Memo1->Lines->LoadFromFile을 통해서 읽은다음, 다른 Memo에다가 HEX값으로 변환하는 것, 또 다른 하나는 API함수를 쓰는 것인데요, CreateFile과 ReadFile을 사용했습니다. 하지만, 전자의 경우는 RIFFt? 까지만 읽어져서 도저히 그 이상 나가질 못하구요, 후자의 경우는 파일을 제대로 못읽어오는 것 같습니다. 읽어올때의 설정이나 그런걸 봐도 정상인 것 같았구요...
:
: 왜그런지 이유를 알 수가 없어서 이렇게 올려봅니다 :) 도와주시면 정말 감사하겠습니다!
|