|
저두 일전에.. 고생 한적이 있는데 파일을 읽어 들일때의 방식에 따라 틀려 지게 되는데
binary 파일이면 아래와 같은 형태로 읽으시면 됩니다.
제가 *.bin 파일을 읽어 봤으니까 될겁니다.
그리고 읽으실때유의사항이 있습니다. 한번에 16byte 이상은 읽으 실수 없습니다.
이점 유념 하셔서 읽으시기 바랍니다.
아래의 예제는 제가 bin 파일을 읽을때 사용한것입니다.참조 하시기 바랍니다.
long TMainForm::OpenFile_LoadData(char* szStart, char* szEnd, unsigned char* reData)
{
bool bSave = false;
char strImsi[0x1000A]={0,};
//unsigned char imsistr[3]={0,};
long nImsi = 0;
int nCheck = 0;
ifstream fin;
fin.open(strFile.c_str(),ios_base::in|ios_base::binary);
int j = 0;
if(!fin.is_open())
return 0;
AnsiString str_restore,str_temp,strStart,strEnd;
unsigned char str_buf[300];
int nLength;
while(1)
{
str_restore ="";
memset(str_buf,0,sizeof(str_buf));
fin.read((unsigned char*)str_buf,sizeof (unsigned char) * 16);
nLength = j * 16;
strStart.sprintf("%08X", nLength);
if(strcmp(strStart.c_str(),szStart) == 0)
{
bSave = true;
}
if(fin.eof())
{
bSave = false;
break;
}
if( bSave == true)
{
for(int count1=0;count1<16;++count1)
{
nCheck = 0;
strImsi[nImsi++] = str_buf[count1];
nCheck = str_buf[count1];
uCheckSum.nCheckSum = uCheckSum.nCheckSum + nCheck;
}
}
if(strcmp(strStart.c_str(),szEnd) == 0)
{
bSave = false;
// bCheck_SendData = false;
break;
}
j++;
} //end while
memcpy(reData,strImsi,nImsi);
return nImsi;
}
30억 님이 쓰신 글 :
: 답변감사드립니다.
: 지금 파일을 읽으면 원본 데이터가
: 11122120040820235000000.002P00007.0U000.001P000.040P0000.40P00000.0P000.055P000.015P0000.01P00000.0P0000013D00001.6M00023.8C1000.0021017.0001000.0021000.0431000.411000100020001001700010000##
: 이런식으로 죽 나열되어 있는 데이터 입니다. 그런데 제가 이 바이너리 파일을 만든게 아니라 다른데에서 만든 파일을 제 프로그램에서 읽어들여서 아스키로 바꿔주고 싶거든요.
: 그런데 제가 초보라 바이너리 파일을 읽는 방법을 잘 모르겠습니다.
: 읽어도 이상한 값으로만 깨지고. 어떻게 해야 읽을수 있을까요? 그냥 읽으면 된다고는 하는데 그 방식을 몰라서 .... 부탁드립니다.
:
: smleelms 님이 쓰신 글 :
: : 음.. 바이너리 파일 2개를 첨부하셨는데요..
: : 바이너리로 읽는 방식이 중요한게 아니라, 이 바어너리 데이터가 어떤 포맷으로 저장된, 무엇을 의미하는 데이터인가가 중요하다고 하겠지요..
: :
: : 실제로 올려주신 바이너리 데이터를 메모리에 읽어들여도 그데이터들을 어떤 데이터 형태로 저장(대입)하느냐에 (ex : char, float, int , struct...) 따라서 다를테니까요..
: :
: : 무엇보다도 올려주신 바이너리 파일이 어떠한 형태로 저장이 된것인지를 아셔야, 읽어들여도 디코딩이 되겠죠.
: :
: : 물론 아신다면 질문에 그 부분에 대한 언급이 있었겠지만, 바이너리 파일 2개 올리시고 읽을 수 없냐고 하시길래 노파심에 적어봅니다. (제가 잘 몰라서 그럴수도 있습니다.. 양해해 주시길.. ^^;)
: :
: : 그럼.. 부디 원하시는바를 이루시길...
: :
: :
: : 30억 님이 쓰신 글 :
: : : 바이너리 파일을 읽어주세요.
: : : 이 파일을 읽어야 하는데 잘 안되네요.
: : : Q&A에 나온 방식으로 읽었는데 원래 데이터가 이상한건지
: : : 아니면 바이너리 읽는 방식이 다른 방식이 있는지 알고 싶습니다.
: : : 고수님들 한번 읽어봐주세요.부탁드립니다.
|