目标是从二进制文件中提取图像。如何在二进制文件中搜索文件类型的标记、SOI 和 EOI。常规 find() 函数似乎不起作用,因为我无法将二进制文件作为字符串加载。
问问题
631 次
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 回答