a.txt가 ANSI 코드로 되어 있고,
2바이트의 16진수 문자 뒤에 구분 문자가 1바이트가 있다는 가정에
아래와 같이 하시면 됩니다.
// 파일 열기
FILE *fp=fopen("F:\\a.txt","rb");
//pz_buffer 크기 확인을 위한 파일 포인터 이동
fseek(fp,0,SEEK_END);
int pz_buffer_size=ftell(fp)/3;
fseek(fp,0,SEEK_SET);
//pz_buffer 생성
unsigned char *pz_buffer = new unsigned char[pz_buffer_size];
//StrToInt 를 사용하기 위해 "0x__ "형태의 버퍼를 만듦
char *buff = new char[5];
buff[0]='0';
buff[1]='x';
buff[4]=0;//공백 문자
//2바이트 읽고 1바이트 이동 하면서 buff의 2,3 인덱스에 값을 채우고 buff를 숫자로 변환하면서 루프를 돎
for (int i = 0; i < pz_buffer_size; i++) {
fread(&buff[2],sizeof(char),2,fp);
pz_buffer[i]=StrToInt(buff);
fseek(fp,sizeof(char),SEEK_CUR);
}
fclose(fp);
//값 확인
for (int i = 0; i < pz_buffer_size; i++) {
Memo1->Lines->Add(IntToHex(pz_buffer[i],2));
}
delete[] buff;
delete[] pz_buffer;
또아리 님이 쓰신 글 :
: a. txt 파일이
:
: hex로 되어 있는 데이터 인데 이걸 buffer에 넣고 싶은데 어떻게 해야 할까요?
:
: ex)
: a.txt
: 10 3E 5F 50 ......
:
:
: -->
: pz_buffer[xx] = {0x10, 0x3E, 0x5F, 0x50.....};
|