2011-03-21 5 views
1

구형 C++ 응용 프로그램에서 전달 된 바이트 배열을 구조체를 정확히 알지 못해도 C#으로 변환 할 수 있습니까?블라인드 bytearray를 구조로 변환 하시겠습니까?

우리 회사에서 사용하는 이전 응용 프로그램을 다시 만들려고하지만 소스 코드를 더 이상 사용할 수 없습니다. 어떤 도움이라도 대단히 감사하겠습니다. 감사!

+1

안녕하세요, 구조 traslation가 마샬링이라고 .... 당신은 그렇게 할 Marshal.PtrToStructure 기능을 사용할 수 있습니다. 하지만 구조가 어떻게 정의되는지 알아야한다고 생각합니다. 어쨌든 구조 레이아웃 목록에서 알아야합니다. 다음 위치에서 설명서를 찾을 수 있습니다. http://msdn.microsoft.com/en-us/library/4ca6d5z7.aspx – Kevin

+0

Thanks! 이제 그게 부름받은 것입니다. 그러나, 내가 보낸 것으로 예상대로 전송되는 바이트 배열이별로 복잡하지 않은 것으로 나타났습니다. – arvil

답변

4

실제로 배열에 포함 된 데이터를 사용하려면 바이트 배열의 구조에 대해 알아야합니다. 이 정보가 없으면 배열은 바이트뿐입니다. 바이트로 쉽게 가져올 수 있지만 거의 사용되지 않습니다.

이 정보를 사용할 수없는 경우 hex editor을 사용하여 바이트 데이터를 리버스 엔지니어링 할 수 있습니다.

+0

바이트 배열을 16 진수로 변환 한 다음 문자열로 변환했습니다. 그리고 분명히 나 자신을 구분 된 문자열로 만든다. 16 진수 편집기 팁을 주셔서 대단히 감사합니다! – arvil

1

항상 첫 번째 바이트의 주소를 유형 *로 캐스팅하여 작동 할 수 있기를 바랍니다. C + + 코드가 어떻게 컴파일되었는지에 따라 실제로는 32 비트 및 64 비트 OS에서 크기 조정 문제가있을 수 있습니다. 것은 당신이 캐스트하고 싶은 유형을 알아야한다는 것입니다. 아마도 포인터로 바이트 배열의 크기를 지시자로 사용하거나 포인터 연산을 사용하여 필드를 읽을 수 있습니다. 이 경우 구조체에 대한 정보를 알고 있어야합니다. 그렇지 않으면 모두 바이트처럼 보입니다.

관련 문제