0

目标是从二进制文件中提取图像。如何在二进制文件中搜索文件类型的标记、SOI 和 EOI。常规 find() 函数似乎不起作用,因为我无法将二进制文件作为字符串加载。

4

2 回答 2

0

您想在流(而不是字符串)中搜索魔术词。

这是想法:

一次读取一个字符(使用 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

另一个想法:

如果您可以使用 unix shell(而不是 Python),您可以尝试使用 unix 管道并链接一些搜索工具(如 grep 和 xxd)

喜欢

cat yourbinfile | xxd -p | grep HEXMAGICWORD

其中 HEXMAGICWORD 是

echo jpeg | xxd -p

我对shell不是很熟悉,所以这不是确切的答案。

于 2012-12-06T10:29:42.593 回答