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