2016-09-04 14 views
0

Pythonでは、バイナリファイルからいくつかのデータを抽出しようとしています。私は自分のデータのオフセットを知っています。彼らは常に同じです。たとえば、下には最初の4つのオフセットと変換されたオフセットが10進数で記載されています。 0x0000103A - - 4154 2つの16進オフセットの間のバイトを計算する

  • OFFSET3 -

    • オフセット1 - 0x00000409 - 1033
    • オフセット2 0x00001C6B - 7275
    • OFFSET4 - 0x0000289C - 10396

    Iは、それぞれ最初の後(オフセットことを知っています1)、3121の小数点が離れているので、次のオフセットにスキップする方法はありますか? 3121小数点以下を次のオフセットに移動するにはどうすればよいですか?

    私は抽出する必要がある128のオフセットがあります。私は、オフセットの間の差(バイト数)を動的に決定する方法があることを願っていますか?

    私は0x100を使ってオフセットから256文字を抽出するたびに同じデータを得ることができます。

  • +0

    '3121'は定数です - 私は少し混乱しています*私は抽出する必要がある128のオフセットがあります。オフセットの差(バイト数)を動的に決定する方法があることを願っていますか?* –

    +0

    には何かがありますか?あなたはちょうど3121をオフセットに追加することはできません – Natecat

    答えて

    1

    file.seek()を使用すると、ファイル内の場所をスキップできます。この場合、ファイル内の次の場所に移動するには、file.seek(3121, 1)を使用し、現在の位置から3121バイト先に検索します。

    EDIT:開いた後にファイルの位置を変更していたことを認識していなかったので、読んでいる256バイトを考慮して、毎回先読みしている2685バイトになるはずです。

    +0

    私は実際にはforループを使っていましたが、これと同じ方法で、シークを使用して、これについてあなたの助けを借りて:) –

    関連する問題