2011-12-15 3 views
0

결과 파일을 이진 파일에 저장하는 프로그램이 있습니다. 결과 파일을 XML 형식으로 내보내는 것도 프로그램 내에서 가능합니다.알 수없는 이진 파일을 번역하는 중! 그것은 가능한가?

결과 자체를 탐색 할 때 프로그램 자체가 끔찍하기 때문에 필자는이 결과 파일을 읽는 프로그램을 직접 작성했지만 분명히 XML 형식을 사용했습니다.

문제는 이진 파일에서 내 보낸 XML 파일이 너무 큽니다. 원본 프로그램에서 사용할 수있는 이진 파일은 약 100KB이고 XML로 내 보낸 파일은 약 2 ~ 3MB입니다.

원본 바이너리 파일을 읽는 방법을 알고 싶습니다.

+1

2-3MB XML의 문제점은 무엇입니까? 한 번 읽은 다음 LINQ를 사용하여 쿼리 할 수 ​​있습니다. 바이너리 파일을 읽을 수는 있지만 아무런 문제가 없지만 원본을 복원 할 수는 있습니다. – oleksii

+0

동일한 응용 프로그램에서 바이너리로 작성된 바이너리 파일을 역 직렬화하는 방법을 묻고 있습니까? –

+0

@oleksii 하나의 xml 파일은 문제가되지 않지만 가끔은 한 번에 최대 50 개를로드하므로 성능이 저하됩니다. –

답변

2

바이너리 파일에서 데이터를 가져 오려면 그 구조를 알아야합니다. 당신이 그 구조를 모른다면, 나는 이것이 희망없는 노력이라고 생각합니다. xml 파일은 데이터 외에도 구조가 포함되어 있으므로 훨씬 커집니다. 당신은 그것을 읽고 해석 할 수 있습니다.

1

사용할 수없는 경우 프로그램 소스 코드를 읽어야합니다. ILDASM 또는 반사경에서이 프로그램을 열고 바이너리 파일 작성 방법을 시도하십시오. 아마 이것은 바이너리 직렬화를 사용하여 이루어질 것이다.

직렬화 속성을 포함하여 원본 유형의 정확한 사본 인 사용자 정의 유형을 정의하고 2 진 직렬화를 사용하여로드 할 수 있습니다.

그러나 타사 파일 형식을 변경할 때마다 프로그램을 변경해야 할 수도 있습니다. 나는 XML을 사용하는 것이 더 낫다고 생각한다.

+0

ildasm cant 프로그램의 exe 또는 dll 파일을 엽니 다. ( –

+0

.NET 리플렉터는 무엇입니까? –

+0

원래의 progam은 2005 년으로 거슬러 올라갑니다 ... C 언어로 프로그래밍 된 것인지 확실하지 않습니다. ILDASM은 다음과 같이 말합니다. 그것은 일반적인 CLR 헤더를 가지고 있지 않습니다 ... neverthelss 어떤 일이 일어날지를보기 위해 다른 디스어셈블러와 시도 할 것입니다! –

관련 문제