0

目的は、バイナリファイルから画像を抽出することです。バイナリファイルでファイルタイプのマーカーであるSOIとEOIを検索するにはどうすればよいですか。バイナリファイルを文字列としてロードできないため、通常のfind()関数は機能しないようです。

4

2 に答える 2

0

(文字列ではなく)ストリーム内の魔法の単語を検索したい。

アイデアは次のとおりです。

このファイルから一度に1文字ずつ読み取り(file.read(1)を使用)、魔法の単語のキューの長さを使用し、読み取りごとにキューを確認します

MAGIC_WORD = r'JPEG'  # it's example... just example
l = list(c for c in f.read(len(MAGIC_WORD)))
offset = 0
while True:
    if ''.join(l) == MAGIC_WORD:
        return offset
        offset += 1
        l.pop(0)
        l.append(f.read(1))

必要性を感じたら...つまり、スピードの必要性、このwikiの記事を確認し、よりスマートなアルゴリズムを使用して、最後にc++に切り替えてください。

申し訳ありませんが、これを行うPythonライブラリを提示しているのかわかりません。幸運を

于 2012-12-06T09:49:45.567 に答える
0

別の考え:

(Pythonの代わりに)unixシェルを使用できる場合は、unixパイプを使用して、いくつかの検索ツール(grepやxxdなど)をチェーンすることができます。

お気に入り

cat yourbinfile | xxd -p | grep HEXMAGICWORD

ここでHEXMAGICWORDは

echo jpeg | xxd -p

私はシェルにあまり詳しくないので、正確な答えではありません。

于 2012-12-06T10:29:42.593 に答える