|
일단 파일을 읽는 함수는 여러가지가 있습니다. 그중에 편한것을 사용하시면 될거구요..
예를 든다면...
byte buff[1024];
TFileStream *infs;
try
{
try
{
infs = new TFileStream("c:\\dl05005.dat", fmOpenRead);
infs->Seek(0, soFromBeginning);
infs->ReadBuffer(buff, sizeof(buff)); // 파일사이즈만큼 또는 블럭사이만큼이 되겠지요
}
catch(const Exception& e)
{
Application->MessageBox(e.Message.c_str(), "File Open/Read Error", MB_OK|MB_ICONERROR);
}
}
__finally
{
delete infs;
}
그런데 실제로 올려주신 파일을 위의 예제처럼 buff에 읽어들인다고 하더라도...
저넘들을 어떻게 해석해야 되는지는 파일저장시 했던 과정의 역으로 해석이 되어야 한다는 겁니다.
즉.. 올려주신 내용이 11122120040820235000000.~~~
이렇게 되더라도.. 저내용이 그냥 integer 데이터인지.. float 데이터인지.. 아니면
struct {
int aaa;
float bbb;
char ccc;
}
처럼 저장된 데이터인지 알 수가 없다는겁니다. 올려주신 데이터를 보면 숫자(물론 그냥 char일수도 있습니다.)뿐 아니라 dot에 알파벳까지 있으니 더 알수가 없지요.
그리고 또 다른 측면에서 보면 지금 제시해주신 원본 데이터가 다른 프로그램에서 읽어들인것을 보여주신것 같은데요..
그렇다면 cnt 파일과 dat 파일이 서로 연관되어 있다고 볼 수도 있습니다.
( .cnt 파일은 가장 많이 사용되기로는 "Windows 또는 기타 시스템, 도움말 색인 등의 목적으로 사용되는 콘텐츠 파일"이라고 소개되기도 하네요..)
그렇다면 더더욱 저장할때의 포맷을 알아야만이 제대로 읽어들일 수가 있겠지요.
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에 나온 방식으로 읽었는데 원래 데이터가 이상한건지
: : : 아니면 바이너리 읽는 방식이 다른 방식이 있는지 알고 싶습니다.
: : : 고수님들 한번 읽어봐주세요.부탁드립니다.
|