2012-07-28 2 views
-3

특정 레거시 프로그램에서 직렬화 된 객체가 있습니다. 유형에 대한 문서가 거의 없습니다.알 수없는 객체를 루비에서 비 직렬화하기

내가 해봤

C 번호로 읽을 수있는 구조로 데이터를 추출하고 싶습니다 :

  • 는 16 진수 편집기에서 파일을 열고 내용을 분석하는 단계; 그들은 왜곡하고 많은 설명을하지 않고
  • 매우 명확하지 않으며 아마도 압축 것

내가 알고있는 무엇 :

파일 내가 (제공 I 돈 '의 변화를로드 할 수 있습니다
  • 무엇을 나타내는 지
    • 어떤 체크섬이나 어떤 것도 체크 아웃하지 마십시오)
    • Ruby에서 연재되었습니다.
  • +2

    '내가 접근하고있는 더 좋은 방법이 있을까? '나는 더 나은 길을 제안하는 길을 이해할 수 없다. 너 뭐 해봤 니? 왜 시간이 오래 걸리나요? 데이터가 무엇입니까? 형식은 무엇입니까? C#에서 직접 읽을 기회가 없습니까? –

    +0

    좀 더 명확하게 해주세요. 이 파일의 여러 복사본을 만들고 값을 하나씩 편집하고 파일에서 오프셋을 찾는 작업을 시도했습니다. 그러나 일부 데이터는 매우 복잡해집니다. 다른 변수가 많습니다. 문제의 데이터는 RPG 게임의 데이터 파일입니다. 형식은 내가 말했듯이, 일련의 루비 구조 나 클래스에 대한 조사가 끝난 후입니다. 나는 그것을 다시 직렬화 할 수 있도록 Ruby에서 클래스를 다시 작성하려고 시도했다. 그런 다음 원하는 형식으로 저장한다. 어쩌면 내가 원시 스트림을 읽을 수 jsut 수 있습니다. –

    +0

    골든 규칙 [여기] (http://msmvps.com/blogs/jon_skeet/archive/2010/08/29/writing-the-perfect-question.aspx) –

    답변

    0

    C#을 사용하여 파일을 직렬화 해제하면 안됩니다. unmarshal the data in a Ruby program해야합니다. 그런 다음 Ruby 프로그램은 C#에서 쉽게 읽을 수있는 언어 중립적 인 형식 (예 : json, xml 등)으로 프로그램을 내보낼 수 있습니다.

    +0

    그래서 내 최선의 방법은이 Ruby 클래스가 드러내는 모든 필드를 찾고, 클래스를 빌드 한 다음, 그것을 마샬링하려고 시도하는 것입니다. –

    +0

    @ 본, 그건 내 생각이야. 파일을 만드는 게임에 액세스 할 수 있다면 마샬링 된 파일에 표시된 Ruby 클래스를 실제로 사용할 수 있습니다. 당신이 그것들을 찾을 수 있다면, 그 일은 훨씬 쉬워진다. –

    관련 문제