2016-09-04 2 views
0

파이썬에서 바이너리 파일에서 일부 데이터를 추출하려고합니다. 내 데이터의 오프셋을 알고 있습니다. 그들은 항상 동일합니다. 예를 들어, 아래에 쓰여진 것은 처음 4 개의 오프셋과 10 진수 값으로 변환 된 오프셋입니다. 0x0000103A - - 4154 두 개의 16 진 오프셋 사이의 바이트를 계산하십시오.

  • Offset3 -

    • Offset1 - 0x00000409 - 1033
    • 오프셋 2 0x00001C6B - 7275
    • Offset4 - 0x0000289C - 10,396

    나는 각 최초의 후 (오프셋 것을 알고있다 하나), 3121 개의 소수점 이하 자릿수가 있으므로 다음 오프셋으로 건너 뛸 수있는 방법이 있습니까? 3121 소수점을 다음 오프셋으로 어떻게 이동합니까?

    추출해야하는 128 개의 오프셋이 있습니다. 오프셋 (offset) 사이의 차이 (바이트 수)를 동적으로 결정하는 방법이 있기를 바랍니다.

    그런 다음 0x100을 사용하여 오프셋에서 256자를 추출 할 때마다 같은 데이터를 얻을 수 있습니다.

  • +0

    '3121' 상수입니까? 약간 혼란 스럽습니다. * 추출해야하는 128 개의 오프셋이 있습니다. 오프셋 사이의 차이 (바이트 수)를 동적으로 결정하는 방법이 있기를 바랍니다. * –

    +0

    내가 누락 된 것이 있습니까? 그냥 오프셋 3121을 추가 할 수 없습니까? – Natecat

    답변

    1

    file.seek()을 사용하면 파일의 위치를 ​​건너 뛸 수 있습니다. 이 경우 파일의 다음 위치로 이동하려면 file.seek(3121, 1)을 사용하면 3121 바이트를 현재 위치를 기준으로 검색합니다.

    EDIT : 파일 위치를 변경 한 후에 파일 위치가 변경되었다는 사실을 알지 못했기 때문에 실제로 읽어야 할 256 개를 고려하여 매번 앞당기는 2685 바이트 여야합니다.

    +0

    실제로 for 루프를 사용하여이 작업을 수행했지만 많은 도움을 얻으려는 시도가있었습니다. :) –

    관련 문제