이진 파일 형식으로 작업하고 있습니다. 설명하기가 어렵 기 때문에 가능한 한 간단하게 만들려고 노력할 것입니다.파일에서 데이터 참조/포인터 처리?
파일에 기록되는 데이터 구조에는 '포인터'(즉, 파일의 다른 위치에있는 문자열에 대한 포인터 또는 파일 내의 다른 구조체에 대한 포인터)가 포함될 수 있습니다. '포인터' pointer '는'offset '이 될 것입니다. 즉, 구조는 파일 내의 문자열의 OFFSET을 포함합니다.
빠른 예 :
struct ExampleStruct {
public string Text;
public int Number;
};
'텍스트'문자열 멤버
파일의 시작 부분에 작성 및 NOT 될 것이다는 직렬화 된 구조체에 포함된다.그래서, 본질적으로, 구조체는 파일에 다음과 같이 표시됩니다
struct ExampleStruct {
public uint TextLocationOffset;
public int Number;
};
를 ... 'TextLocationOffset'는 문자열 '텍스트'이 파일 내에서의 위치를 오프셋입니다.
그래서 필자는 "재배치 테이블"을 필요로합니다. 본질적으로 파일 내의 데이터 포인터를 가리키는 이중 포인터의 목록입니다. 내가 ExampleStruct 나의 파일로 작성하기 때문에, 그래서
(? 확인 감각을한다), 그리고는 '포인터'(TextLocationOffset)를 포함, 내 "재배치 테이블"로 구성 것이다 :
public uint TextLocationOffset_LocationOffset;
합니다. .. 'TextLocationOffset_LocationOffset'에는 파일 내의 'TextLocationOffset'의 OFFSET이 포함됩니다.
모두 의미가 있습니까? 나는 그것을 가능한 한 많이 단순화하려고 노력했다.
내 문제는 어떻게 포인터/이중 포인터/재배치 C#에서 모든 추적 할 것이라고? 데이터는 항상 가지고있는 byte [] 배열에 추가되므로 오프셋이 계속 변경됩니다.
'C'에서 'relocated'가되는 포인터를 두 번 가져올 수 있기 때문에 쉽습니다. 그런 다음 원래 '포인터'(예 : 'TextLocationOffset')를 올바른 오프셋으로 변경할 수 있습니다. 그런 다음 'TextLocationOffset'값의 위치를 찾고이를 재배치 테이블에 추가 할 수 있습니다.
죄송합니다. 몇 주 전에이 질문을했지만 답변이 없으므로 혼란 스럽습니다.
내 코드에서이 모든 것을 추적하는 방법이 필요합니다. 팁이 있습니까?
P. 좀 더 철저한 예제가 필요하다면 기꺼이 제공 할 것입니다. :)
가능한 이진 파일 형식 - 데이터 '재배치'? (http : // stackoverflow.com/questions/10183384/binary-file-format-data-relocations) – user7116