C++ 에서 FILE 를 사용해서 데이터를 바이너리로 저장 했다면 C#에서 어떻게 읽어야 할까?.
C#을 배우는 상태에서 C++ 과의 파일 연동 문제가 고민이 되었다.
사실 모르니 궁금증이 생긴 거지만 몇가지 테스트를 하다 보니 바이너리 데이터는 BinaryReader 로 읽을수 있었다.
해당 파일을 읽을때 FileInfo를 사용해서 오픈 한 다음에 BinaryReader로 읽을 수 있다.
FileInfo fi = new FileInfo(@"D:\Testbinary.dat");
BinaryReader br = new BinaryReader(fi.OpenRead());
BinaryReader br = new BinaryReader(fi.OpenRead());
C++ 에서 아래 데이터를 저장했습니다.
FILE* fp = fopen(path, "wb");
int data0 = 100;
float data1 = 100.123f;
char buf0[128] = "son byoung uk";
float data1 = 100.123f;
char buf0[128] = "son byoung uk";
fwrite(&data0, sizeof(int), 1, fp);
fwrite(buf0, 128, 1, fp);
fwrite(&data1, sizeof(float), 1, fp);
fwrite(buf0, 128, 1, fp);
fwrite(&data1, sizeof(float), 1, fp);
fclose(fp);
C# 에서 아래와 같이 데이터를 읽었습니다.
int data0;
float data1;
char[] buf0;
string buf1; data0 = br.ReadInt32();
buf0 = br.ReadChars(128);
buf1 = new string(buf0);
data1 = br.ReadSingle();
float data1;
char[] buf0;
string buf1; data0 = br.ReadInt32();
buf0 = br.ReadChars(128);
buf1 = new string(buf0);
data1 = br.ReadSingle();
위의 내용을 아래와 같이 정리해봤습니다.
C++ | C# |
int | br.ReadInt32() |
float | br.ReadSingle() |
double | br.ReadDouble() |
char[] | string a = new string(br.ReadChars(128)) |
출처 : http://www.iamgsi.com/entry/C-C-%EB%B0%94%EC%9D%B4%EB%84%88%EB%A6%ACBinary-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-C-BinaryReader-%EB%A1%9C-%EC%9D%BD%EA%B8%B0
728x90
반응형
'C#' 카테고리의 다른 글
[C#] - UserControl 의 EventHandler 연동하기 (0) | 2013.05.25 |
---|---|
[C#] - Win Form Flicker Free 처리.. (0) | 2013.05.25 |
[C#] - StreamReader, Regex, 텍스트 라인 파서 (0) | 2013.05.25 |
[C#] - Simple Update Manager (Http 프로토콜 통한 다운로드 : WebClient, DownloadFileAsync) (0) | 2013.05.25 |
C# Ftp File Upload - File Type 처리할때 (0) | 2013.05.25 |