문제

내가 이해하려고 하는 파일 형식의 시각적 FoxPro 콤팩트수(*.IDX).나는 현재 참조 Microsoft 설명서 을 위해 안내합니다.

Index B-트리 512 바이트 노드입니다.각각의 잎("외관")노드를 포함하는 여러 항목이 있습니다.각 항목은 네 가지로 구성되어 데이터:

  • 행 번호[고정 길이]
  • 중복 바이트수(설명서 없이 설명)[고정 길이]
  • 뒤 바이트수(설명서 없이 설명)[고정 길이]
  • 키[가변 길이]

항목(지 않고 그들의 열쇠)저장되어 처음에는 노드의 바로 뒤 노드의 24-byte header.그들의 열쇠는 포함되지 않는이 위치에서이기 때문에 키 길이에 차이는 동안,행 번호를 중복 바이트 계산하고 끄는 바이트 수는 고정이다.키 저장 끝에 노드들을 뒤로 이동합니다.예를 들어:

  • 24 바이트 헤더
  • 행 번호를 중복 바이트 계산을 끄는 바이트 수(항목#1)
  • 행 번호를 중복 바이트 계산을 끄는 바이트 수(항목 2 위)
  • 행 번호를 중복 바이트 계산을 끄는 바이트 수(항목#3)
  • ...
  • 키(항목#3)
  • 키(항목 2 위)
  • 키(항목#1)

어떻게 확인할 수 개별적인 길이의 키?이 문서가 나타나지 않습을 지정한다.그들은 완벽하게 연속(null 바이트로 구분).

나를 분리 할 수 있는 열쇠에 의해 수동으로 visual inspection.내가 의심되는 것을 끄는 바이트 수 표현의 길이 열쇠입니다.그러나지 않았다,그에 상관의 길이 결정된 이것에 의해 검사합니다.

내가 믿는 FoxPro 파일 포맷에서 파생됩니다 xBase 표준입니다.아마도 이 링 벨?

도움이 되었습니까?

해결책

후에 발견 XBase::Index 펄 모듈,내가 결정하는 외부에서 노드를 효과적으로 이와 같은 길이가 고정 길이 열쇠를 내부에서 발견되는 노드를 제외하고,후행 공백 제거됩니다.는"trailing 바이트수가"에서 언급 설명서를 참조하(얼마나 많은 후행 공백을 잘렸의 열쇠).나는 아직 결정되지 않을 것"중복 바이트 계산"이지만,모듈에서 이상 명확히 그것의 관계:

variable_key_length = fixed_key_length - duplicate_byte_count - trailing_byte_count

예를 들어,고정된 키 길이를 위한 이 지수는 10 바이트입니다.지금 가는 열쇠를"개"에 저장되었 외부 노드입니다.그것의 중복 바이트 수(내용에 따라 관찰)가장 가능성이 있 제로,그 뒤 바이트 계산됩 7(수 공간을 잘립니다).따라서,단지 세 가지 바이트 수를 나타내는"DOG"이라고 저장됩니다.

다른 팁

에 대해 중복 바이트 수:이 말은 수의 첫 번째 바이트는에서 같은 현재 키를 이전에 열쇠이다.첫 번째 키 항목의 끝에 저장됩 노드는 전체 길이를 제외하고,후행 공백;연속적인 핵심 항목이는 기호에서 다른 키를 이전 항목입니다.

에 Xbase 인덱싱 거의 10 을 초과하는 자 15(희소)사용하는 경우 지수(지수 논의 텍스트).

어떤 경우에는 경우에 당신은 무엇인지 알 수의 키 비례적으로 나누어진 부분입니다.를 할 때는 알고리즘 데이터를 저장하거나 저장할 데이터를 사용:시작 또는 종료 마커 또는 탭,또는 당신은 떠나 정적 크기 그래서 당신이 사용하지 않는 상태로 남겨져서는 안됩니다.정적 형식은 비효율적이지만 제공합니 더 빠른 속도에서 읽고 분명히 더 생성 예측 가능한 구조물입니다.

마이크로소프트 말합니다 이에 대해 IDX 파일의 구조물(그리고 하단 페이지의 링크가 있는 모든 다른 사람처럼 콤팩트한 형식으로 지수.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top